2015-04-02 110 views
-1

我有一個查詢讓我撓了一下頭。如何選擇沒有重複的行

我有一個交易表。它包括類型,日期,時間,數量等。大約有30種類型。不幸的是,類型1和2 可能是成對出現,日期,時間和數量讓我知道它們是否確實是重複的同一個事務。

我可以在日期,時間和數量匹配的情況下獲取除類型1和2之外的所有類型的所有行嗎?

例如輸入:

Row | Type | Qty | Date     | Time | 
1 | 1 | 12 | 2015-01-06 00:00:00.000| 74501| 
2 | 1 | 15 | 2015-02-06 00:00:00.000| 91023| 
3 | 2 | 15 | 2015-02-06 00:00:00.000| 91023| 
4 | 3 | 7 | 2015-03-10 00:00:00.000|151256| 

問題是排數2 & 3表示相同的交易。所以我的select語句需要返回第1,3,4行(或1,2,4)。

注:2型總有1型,1型並不總是有型2.

請幫我這句話好!

+0

添加更多的列請張貼樣本數據和預期的結果,以便更好地解釋你正在嘗試做的。儘管我懷疑你可以用CASE語句來做你想做的事情,無論是在選擇列表中還是在GROUP BY中。 – 2015-04-02 19:23:24

+0

有沒有辦法添加表格? – Paul 2015-04-02 19:42:47

+0

您可以將任何格式的文本複製並粘貼到您的問題中。您可以使用{}代碼視圖按鈕保留確切的格式,而不必忽略所有換行符。 – 2015-04-02 19:47:05

回答

1

您可以直接在列表中後,通過分區...

WITH dups AS 
    (SELECT *, row_number() over 
    (PARTITION by Date, Time, Quantity ORDER BY type) 
    AS c1 FROM t2) 

SELECT DISTINCT type, date, time, quantity 
FROM dups 
WHERE c1 > 1 
AND type not in (1,2)