SQL Fiddle
MS SQL Server 2008的架構設置:
CREATE TABLE Table1
([record] int, [COL1] varchar(1), [COL2] varchar(1), [COL3] varchar(1), [COL4] date, [COL5] date)
;
INSERT INTO Table1
([record], [COL1], [COL2], [COL3], [COL4], [COL5])
VALUES
(1, 'A', 'B', 'X', '2013-01-20', '2013-01-20'),
(2, 'A', 'B', 'Y', '2013-01-15', '2013-01-16'),
(3, 'B', 'D', 'X', '2013-02-14', '2013-02-16'),
(4, 'B', 'D', 'Y', '2013-02-15', '2013-04-09'),
(5, 'C', 'E', 'X', '2013-02-14', '2013-02-16'),
(6, 'C', 'E', 'Y', '2013-01-15', '2013-02-09')
;
查詢1:
SELECT t1.*
FROM Table1 t1
INNER JOIN Table1 t2 ON t1.col1 = t2.col1 AND
t1.col2 = t2.col2 AND
t1.col3 <> t2.col3 AND
t2.col4 >= dateadd(dd,-7,t1.col5)
WHERE t1.col3 = 'X'
UNION
SELECT t2.*
FROM Table1 t1
INNER JOIN Table1 t2 ON t1.col1 = t2.col1 AND
t1.col2 = t2.col2 AND
t1.col3 <> t2.col3 AND
t2.col4 >= dateadd(dd,-7,t1.col5)
WHERE t1.col3 = 'X'
Results:
| RECORD | COL1 | COL2 | COL3 | COL4 | COL5 |
|--------|------|------|------|------------|------------|
| 1 | A | B | X | 2013-01-20 | 2013-01-20 |
| 2 | A | B | Y | 2013-01-15 | 2013-01-16 |
| 3 | B | D | X | 2013-02-14 | 2013-02-16 |
| 4 | B | D | Y | 2013-02-15 | 2013-04-09 |
那基本的布爾邏輯。你會在這裏找到答案,但你什麼都不會學。嘗試一下,不難。 – usr