Kết thúc truy vấn hiện tại của bạn trong CTE thêm ROW_NUMBER OVER PARTITION BY
cột của bạn, sẽ tạo RN cho mỗi nhóm giá trị. Trong truy vấn bên ngoài, chỉ cần sử dụng CASE để chọn các giá trị trong đó GRP_RN =1 và chuỗi rỗng nếu không.
WITH CTE AS
(
Select distinct top 100000
o.EventSetName,
o.EventSetDisplay,
o.EventSetDescription,
o.ChildSetName,
ROW_NUMBER() Over (Order By f.ChildSetName) RN,
f.DocumentDispSequence,
f.SectionDispSequence,
o.ObsSetDispSequence,
null as NullColumnNeedsName,
ROW_NUMBER() OVER (PARTITION BY o.EventSetName, o.EventSetDisplay,o.EventSetDescription ORDER BY f.ChildSetName) GRP_RN
From ##ObsSetLevel o,
INNER JOIN ##Final f ON f.ChildSetName = o.EventSetName and o.EventSetName = @variableName
)
SELECT
CASE WHEN GRP_RN = 1 THEN o.EventSetName ELSE '' AS EventSetName,
CASE WHEN GRP_RN = 1 THEN o.EventSetDisplay ELSE '' AS EventSetDisplay,
CASE WHEN GRP_RN = 1 THEN o.EventSetDescription ELSE '' AS EventSetDescription,
other columns
FROM CTE
Order By RN asc, DocumentDispSequence asc, SectionDispSequence asc, o.ObsSetDispSequence asc
Tái bút:Tôi cũng đã sửa việc bạn sử dụng các phép nối kiểu cũ. Cách sử dụng đó đã lỗi thời hơn 20 năm trước với sự ra đời của các tiêu chuẩn SQL-92. Bạn nên tránh sử dụng chúng.