簡體   English   中英

SQL查詢將兩行合並為結果

[英]SQL query to combine two rows into one as result

我有一個要求編寫一個SQL Server查詢以從一個表中讀取數據的要求,假設該表名為Table1,其結構和行如下所示:

在此處輸入圖片說明

關鍵在於列RefID是否具有值,例如,第2行的RefID值為3,它引用另一行的ID(第3行),並且第3行也必須具有非空的RefID,並且值必須是第一個。 想法是這兩個屬於同一個對象,所以我想將它們作為一個結果行。

我知道我可以在同一張表上進行內部聯接,如下所示:

select T1.*, T2.* from Table1 T1 inner join Table1 T2 on T1.RefID = T2.ID
where T1.ID is not null 

但是問題是結果具有冗余性:結果將有4行,並且正如我提到的那樣,由於第2行和第3行一起代表一個對象,所以我只希望獲得2行:一個代表第2行第3行,另一個代表第2行對於第4行第5行。我該怎么做?

只需確保其ID連續排列即可:

select T1.*, T2.* from Table1 T1 inner join Table1 T2 on T1.RefID = T2.ID AND T1.ID < T2.ID
where T1.ID is not null 

如果記錄是多余的,並且ID列是唯一的,我完全同意@bulat,那么您不需要在where子句中將它們消除。 我想這個查詢將為您服務。

select * from Table1 a inner join Table1 b ON a.ID=b.RefID and a.ID>b.ID 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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