簡體   English   中英

SQL Server查詢以查找按一列分組但在其他至少一列中不同的值

[英]SQL server query to find values grouped by one column but different in at least one of other columns

請原諒我的問題的標題-

我有桌子

TRXN (ID,ACCT_NUM,TRAN_MEMO,AMOUNT,DATE,LRN)

我想編寫一個查詢來拉取具有相同LRN但其他列中的至少一個具有不同值的記錄。 可能嗎?

在我的回答中,我認為您具有唯一的ID值並將其排除。

創建的表:

CREATE TABLE #TRXN (ID INT IDENTITY(1, 1)
                    ,ACCT_NUM INT
                    ,TRAN_MEMO INT
                    ,AMOUNT INT
                    ,[DATE] DATE
                    ,LRN INT
)

插入樣本數據

INSERT INTO #TRXN VALUES (1, 2, 2, '1 jan 2000', 2)
                        ,(2, 2, 2, '2 jan 2000', 2)
                        ,(1, 2, 2, '1 jan 2000', 2)
                        ,(1, 2, 2, '1 jan 2000', 3)

具有相同的LRN,但另一列中至少有一個具有不同的值

;WITH C AS(
    SELECT ROW_NUMBER() OVER (PARTITION BY ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN ORDER BY ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN) AS Rn
           ,ID, ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN
    FROM #TRXN WHERE LRN IN(
    SELECT LRN FROM #TRXN GROUP BY LRN HAVING COUNT(ID) > 1)
)
SELECT ID, ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN
FROM C WHERE Rn = 1

輸出:

ID ACCT_NUM TRAN_MEMO AMOUNT DATE        LRN
---------------------------------------------
1  1        2         2      2000-01-01  2
2  2        2         2      2000-01-02  2

為什么簡單地使用group by:

 SELECT COUNT(1) AS numberOfGroupedRows,ID,ACCT_NUM,TRAN_MEMO,AMOUNT,DATE,LRN
 FROM TRNX GROUP BY ID,ACCT_NUM,TRAN_MEMO,AMOUNT,DATE,LRN

因為按分組將所有相似的行分組為一行

暫無
暫無

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

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