我有一个包含3列的组织的表结构:
[(3, 0.08666666666666667),(4, 0.08666666666666667)]
从某种意义上讲,我想显示的是每列,它仅显示重复值的首次出现。预期输出如下,
DEPARTMENT SECTION SUBSECTION
---------- -------- -----------
A A1 A101
A A1 A102
A A2 A201
A A2 A202
B B1 B101
B B1 B102
B B2 B201
B B2 B202
答案 0 :(得分:3)
正如评论中所述,您应该在应用程序层中真正做到这一点;但是,您可以使用窗口功能来完成此操作:
declare @tmp table (DEPARTMENT varchar(1), SECTION varchar(2), SUBSECTION varchar(4))
insert into @tmp values
('A', 'A1', 'A101')
,('A', 'A1', 'A102')
,('A', 'A2', 'A201')
,('A', 'A2', 'A202')
,('B', 'B1', 'B101')
,('B', 'B1', 'B102')
,('B', 'B2', 'B201')
,('B', 'B2', 'B202')
select
case when rn_dep = 1 then DEPARTMENT else '' end as DEPARTMENT
, case when rn_sec = 1 then SECTION else '' end as SECTION
, SUBSECTION
from (
select
DEPARTMENT,SECTION, SUBSECTION
, ROW_NUMBER() OVER (partition by DEPARTMENT ORDER BY DEPARTMENT, SECTION, SUBSECTION) as rn_dep
, ROW_NUMBER() OVER (partition by DEPARTMENT, SECTION ORDER BY SECTION, SUBSECTION) as rn_sec
from @tmp
) T
结果: