2017-10-05 90 views
1

我有一個NR,日期時間的表,狀態SQL只保留與記錄時間後

如果預訂一空狀態爲1,如果預訂的狀態是0

我需要每天得到一個列表,其中我想看看它是否在當天被預訂了,但沒有返回。

我需要尋找狀態1,而該時間之後,如果沒有一個狀態0

我嘗試這樣做。

SELECT A1.Number, A1.Time TimeOut, A2.Time TimeIn 
FROM dbo.Items A1 LEFT JOIN dbo.Items A2 ON A1.Number = A2.Number 
    AND A2.Time !< A1.Time 
    AND A1.State = 1 
    AND A2.State = 0 
WHERE A2.Time IS NULL 

輸出應該是:

Nr : TimeOut    : TimeIn : 

10 2017/09/15 12:00  NULL 
15 2017/09/15 15:45  NULL 

的數據是:

NR : Status : Date 
5  0  2017/09/15 09:00 
10  0  2017/09/15 12:00 
5  1  2017/09/15 13:00 
15  0  2017/09/15 15:45 
+0

嗨,我正在使用MS SQL 2008服務器 – Danie

+0

add aos a prope r數據示例。 – scaisEdge

+0

添加了示例數據 – Danie

回答

0

你可以選擇該行,其中NR沒有日期的狀態OUT例如:

select NR, Date as TimeOut, NULL as TimeIn 
FROM dbo.Alarms 
    where (NR) NOT in (
     select a.NR 
     from dbo.Alarms a 
     INNER JOIN (
     select NR, Date 
     from dbo.Alarms 
     where status = 1 
     ) t on t.NR = a.NR and Date(t.date) = date(a.date) 
    ) 
+0

我得到NR和日期無效列 – Danie

+0

我已經添加了從dbo.Alarms Timein後,它的工作原理,感謝您的幫助。請編輯你的答案,我會接受它的權利 – Danie

+0

Ops ... @Danie許多..謝謝..答案更新與適當的從條款 – scaisEdge

相關問題