性能使用SQL Server 2000如何增加的查詢
假日(表)
dates
2012-08-02
2012-08-19
2012-08-20
表1
id dates time
001 01/08/2012 00:00
001 02/08/2012 00:00
001 03/08/2012 00:00
001 04/08/2012 12:00
...
...
001 17/04/2012 11:00
001 18/08/2012 00:00
001 19/08/2012 00:00
001 20/08/2012 00:00
001 21/08/2012 12:00
...
我要檢查每一列的以前的日期和未來日期,那麼我想更新禮物或缺席或假期。
條件的
- 如果當前行時間不等於00:00則狀態應該是
P
(現任) - 如果以前的日期時間列是00:00和下一個日期時間列是00: 00然後自動當前行的狀態應該是
AB
(缺席), - 如果日期等於假期表日期後自動當前行的狀態應該是
H
注:此查詢運行不用其他任何故障,唯一擔心的是費時......
查詢
Select
t2.id,
t2.dates,
case
when t2.time <> '00:00'
then 'P'
when t4.dates = t2.dates and t1.intime = '00:00' and t3.intime = '00:00'
then 'AB'
else 'H'
end as attn
from
(
Select id, dates, time from table1
where t1.dates = Cast('18/08/2012' as datetime)
) t1
left outer join
(
Select id, dates, time from table1
where t2.dates = Cast('19/08/2012' as datetime)
) t2
on t1.id = t2.id
left outer join
(
Select id, dates, time from table1
where t2.dates = Cast('20/08/2012' as datetime)
) t3
on t2.id = t3.id
left outer join
(
select dates from holiday
) t4
on t4.dates = t2.dates
上述查詢工作正常,但它正在採取更多的時間來展示,因爲我想要查看從01/09/2012
到30/09/2012
的數據,每個id
,我有n個編號, 系統正在檢查每個編號的上一個日期和下一個日期並顯示結果。
任何其他替代查詢或解決方案是有用於顯示數據
這個功課?爲什麼不使用連接? –
@ElVieejo,雅我想要使用連接... – JetJack