[英]How to write a complex master-detail query SQL Server
我需要一些幫助來讓 SQL 查詢按我需要的方式運行。 我知道你們 SQL 大師會嘲笑這個,但我真的不知道該怎么做 :-( 我在 MS-SQL 數據庫中有一個表,其中包含以下數據
A B C
10 1001 1001001
10 1001 1001002
10 1001 1001003
10 1001 1001004
10 1002 1002001
10 1002 1002002
20 2001 2001001
20 2001 2001002
20 2002 2002001
我想要以下結果
10
1001
1001001
1001002
1001003
1001004
1002
1002001
1002002
20
2001
2001001
2001002
2002
2002001
我認為您可以使用grouping sets
和order by
來做您想做的事情:
select coalesce(c, b, a)
from t
group by grouping sets ( (a), (a, b), (a, b, c) )
order by a,
(case when b is null then 1 else 2 end),
b,
(case when c is null then 1 else 2 end),
c;
這是一個 db<>fiddle。
鑒於數據的性質,您可以將order by
簡化為:
order by a, coalesce(b, a), coalesce(c, b, a)
WITH items AS ( SELECT CAST(A AS NVARCHAR) AS item FROM Table UNION SELECT CAST(B AS NVARCHAR) FROM Table UNION SELECT CAST(C AS NVARCHAR) FROM Table ) SELECT * FROM items ORDER BY item
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.