啞數據(從MSDN PIVOT例子)
CREATE TABLE Mytable (PK int, col1 int, col2 int, col3 int, col4 int, col5 int, col6 int)
GO
INSERT INTO Mytable VALUES (1, 1,4,3,5,4,4)
INSERT INTO Mytable VALUES (2, 2,4,1,5,5,5)
INSERT INTO Mytable VALUES (3, 3,4,3,5,4,4)
INSERT INTO Mytable VALUES (4, 4,4,2,5,5,4)
INSERT INTO Mytable VALUES (5, 5,5,1,5,5,5)
GO
輸入數據
DECLARE @MyInput TABLE (InputValue int)
INSERT @MyInput VALUES (2)
INSERT @MyInput VALUES (4)
INSERT @MyInput VALUES (5)
UNPIVOT源列數據到行。現在,我們可以加入和彙總發現,我們有3根沒有大規模的火柴或條款
SELECT
*
FROM
myTable MT2 --effectively PIVOT back to get original rows
JOIN
(
SELECT
PK
FROM --7 columns into 3, make column name a row identifier
(SELECT PK, col1, col2, col3, col4, col5, col6 FROM myTable) MT
UNPIVOT
(colvalue FOR RowNumber IN (col1, col2, col3, col4, col5, col6)) cols
JOIN --match to user input, set based
@MyInput MD ON cols.colvalue = MD.InputValue
GROUP BY
PK --per original row
HAVING
COUNT(DISTINCT MD.InputValue) >= 3
) foo ON MT2.PK = foo.PK
這適用於套2,4,5和1,4,5
你是如何生成主鍵的? – 2011-01-24 14:34:24
重要問題:您是否嘗試將輸入與相應列(組合鎖)匹配,或者任何輸入是否與任何列匹配?換句話說,1,2,3,4,5,6是否匹配6,5,4,7,7,7三次或零次? 此外,是允許重複的號碼還是這更像是一個基諾問題? – nycdan 2011-01-24 15:08:56
任何輸入都可以與數據庫中的任何列匹配.. – mumair 2011-01-24 15:40:38