簡體   English   中英

如何編寫復雜的主從查詢 SQL Server

[英]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 setsorder 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM