2
我試圖在我的表中創建兩個字段,顯示vid的時間是否與任何其他vid的時間衝突,以及哪個vid的衝突。SQL time in&time out在表012中的任何id之間衝突
示例數據:
SELECT vid, timein, timeout
FROM mytable
vid timein timeout
1 2015-04-15 06:00:00.000 2015-04-16 17:00:00.000
2 2015-04-17 03:00:00.000 2015-04-17 18:00:00.000
3 2015-04-16 16:00:00.000 2015-04-17 06:00:00.000
4 2015-04-12 12:00:00.000 2015-04-12 22:00:00.000
5 2015-03-25 01:00:00.000 null
所需的輸出:
vid timein timeout Clash Clashwith
1 2015-04-15 06:00:00.000 2015-04-16 17:00:00.000 CLASH 3
2 2015-04-17 03:00:00.000 2015-04-17 18:00:00.000 CLASH 3
3 2015-04-16 16:00:00.000 2015-04-17 06:00:00.000 CLASH 1, 2
4 2015-04-12 12:00:00.000 2015-04-12 22:00:00.000 OK
5 2015-03-25 01:00:00.000 null OK
我曾嘗試:
SELECT vid, timein, timeout,
CASE WHEN (SELECT tin.timein
FROM mytable tin
WHERE tin.vid = mytable.vid
AND mytable.timeout IS NOT NULL)
BETWEEN mytable.timein AND mytable.timeout
THEN 'CLASH'
ELSE 'OK'
END AS inclash,
CASE WHEN (SELECT tout.timeout
FROM mytable tout
WHERE tout.vid = mytable.vid
AND mytable.timeout IS NOT NULL)
BETWEEN mytable.timein AND mytable.timeout
THEN 'CLASH'
ELSE 'OK'
END AS outclash
FROM mytable
,因爲它給人一種衝突的所有結果,此項不工作,我也不知道如何獲得與列寫入衝突。
你確定嗎?它會給出與你的測試示例完全相同的輸出 –
已編輯的答案顯示什麼對我有用 – Matt
hey @Matt現在這個代碼是definetely不正確的,例如''或'部分不檢查自連接。我將再次檢查代碼,請嘗試找到一個代碼不工作的示例,我們將解決這個問題。 –