我的DBGRIDEH的显示的数据如下:(是一个表的数据,表名叫AAA)户主姓名 与户主关系 姓名 出生日期
张三 户主 张三 2002-02-01
张三 妻 王五 2002-02-02
张三 长子 张小三 2007-02-15
李四 户主 李四 2000-03-05
李四 妻 李小四 2000-02-01我想实现在DBGRIDEH的显示如下:户主姓名 与户主关系 姓名 出生日期
张三 户主 张三 2002-02-01
妻 王五 2002-02-02
长子 张小三 2007-02-15
李四 户主 李四 2000-03-05
妻 李小四 2000-02-01
请问怎么显示!谢谢!
张三 户主 张三 2002-02-01
张三 妻 王五 2002-02-02
张三 长子 张小三 2007-02-15
李四 户主 李四 2000-03-05
李四 妻 李小四 2000-02-01我想实现在DBGRIDEH的显示如下:户主姓名 与户主关系 姓名 出生日期
张三 户主 张三 2002-02-01
妻 王五 2002-02-02
长子 张小三 2007-02-15
李四 户主 李四 2000-03-05
妻 李小四 2000-02-01
请问怎么显示!谢谢!
Insert @t Select '张三','户主','张三' , '2002-02-01'
Union all select '张三','妻','王五' , '2002-02-02'
Union all Select '张三','长子','张小三' , '2007-02-15'
Union all select '李四','户主','李四' , '2000-03-05'
Union all Select '李四','妻','李小四' , '2000-02-01'
-- 查询
;WITH
T AS(
SELECT
sid = ROW_NUMBER() OVER(PARTITION BY 户主姓名 ORDER BY 与户主关系),
*
FROM @t
)
SELECT
Id = CASE sid WHEN 1 THEN RTRIM(户主姓名) ELSE '' END, 与户主关系, 姓名 ,出生日期
FROM T
--表
Declare @t Table(户主姓名 varchar(50),与户主关系 varchar(50),姓名 Varchar(10),出生日期 datetime)
Insert @t Select '张三','户主','张三' , '2002-02-01'
Union all select '张三','妻','王五' , '2002-02-02'
Union all Select '张三','长子','张小三' , '2007-02-15'
Union all select '李四','户主','李四' , '2000-03-05'
Union all Select '李四','妻','李小四' , '2000-02-01'
-- 查询
SELECT sid = IDENTITY(int, 1, 1), * INTO #
FROM @t
SELECT
Id = CASE A.sid
WHEN B.sid THEN RTRIM(A.户主姓名)
ELSE '' END,
A.与户主关系, A.姓名,A.出生日期
FROM # A,
(SELECT sid = MIN(sid), 户主姓名 FROM # GROUP BY 户主姓名) B
WHERE A.户主姓名 = B.户主姓名
-- ORDER BY B.sid, A.sid
DROP TABLE #
期待高手做答~