這對我來說更容易用一個例子來描繪。這有效,但我不確定是否過於複雜。
CREATE TABLE #Dates(ID int, date1 datetime, date2 datetime, date3 datetime, date4 datetime)
INSERT INTO #Dates VALUES(1, '1 Jan 2008', '2 Feb 2979', '8 Nov 1967', '31 Dec 2001')
INSERT INTO #Dates VALUES(2, '1 Jan 2008', '1 Jan 2008', '1 Jan 2008', '1 Jan 2008')
INSERT INTO #Dates VALUES(3, '1 Jan 2008', '1 Jan 2008', '1 Jan 2008', '31 Jan 2008')
INSERT INTO #Dates VALUES(4, '1 Jan 2008', '1 Jan 2008', '31 Jan 2008', '1 Jan 2008')
-- look at example data - note only row 2 has all 4 dates the same
SELECT * FROM #Dates
-- return rows where the dates are not all the same
SELECT ID as RowsWithDatesNotAllTheSame
FROM
(
SELECT ID, Date
FROM
(
SELECT ID, DateCol, Date
FROM
(SELECT ID, date1, date2, date3, date4
FROM #Dates) p
UNPIVOT
(Date FOR DateCol IN
(date1, date2, date3, date4)
) AS unpvt
) x
GROUP BY ID, Date
) y
GROUP BY ID
HAVING count(*) > 1
來源
2010-08-12 18:46:18
soo
那麼每行都有5個日期嗎?你只關心每個日期在行中是唯一的? – automatic 2010-08-12 18:26:29
日期?或日期與時間? – gbn 2010-08-12 18:49:40