2014-01-30 40 views
1

我想比較2行,並且遇到麻煩。如何比較SQL中的行

我有這行:

Name    StartDate     EndDate 
Ian Buckley  2009-10-30 00:00:00.000  2014-01-09 00:00:00.000 
Ian Buckley  2014-01-10 00:00:00.000  NULL 
Neil Kent  2009-10-17 00:00:00.000  2014-01-09 00:00:00.000 
Neil Kent  2014-01-10 00:00:00.000  NULL 

我試圖做的是檢查每一個名字,如果StartDate(與EndDate空行)是EndDate後(上與行實際EndDate

例如:對於伊恩·巴克利2014-01-10 00:00:00.000> 2014年1月9日00:00:00.000 這是很正常的。

任何想法?

+1

你有PK或某種行計數器?這是整行嗎?這是否得到你想要的? '選擇t1。*,t2。*來自yourtable t1內部聯接yourtable t2在t1.name = t2.name且t2.endDate爲null並且t2.StartDate> t1.enddate' – wruckie

+0

完美!謝謝 – user3253051

回答

0

嘗試此查詢:

SELECT  *, (CASE WHEN t1.StartDate > t2.EndDate THEN 'Ok' ELSE 'Not Ok' END) AS isOk 
FROM  dbo.TABLE_1 AS t1 
LEFT JOIN dbo.TABLE_1 AS t2 ON t2.name = t1.name AND t2.EndDate IS NOT NULL 

WHERE t1.EndDate IS NULL 
+0

它工作完美!謝謝 – user3253051

0

加入你的表和自己。您必須確保每行都因爲它本身而導致連接條件。我通常會添加一個t1.primary_key <> t2.primary_key

Select t1.*, t2.* from yourtable t1 
inner join yourtable t2 on t1.name = t2.name and t2.endDate is null 
    and t2.StartDate > t1.enddate 
+0

完美!非常感謝!!! – user3253051