我想抓住一系列日期和我的數據庫中存在的相應值(如果有的話)。SQL選擇具有附加查找值的順序日期
我有兩個參數 - 今天(日期使用getDate())和天數(整數)。對於這個例子,我使用數值爲10的日子。
代碼來獲得10天的連續日期後的今天:
SELECT top 10 DATEADD(DAY, ROW_NUMBER()
OVER (ORDER BY object_id), REPLACE(getDate(),'-','')) as Alldays
FROM sys.all_objects
我現在需要看幾個值每一天在連續幾天的代碼,這可能會或可能不會在時間表中存在(除非另有說明,我們假設所有日期爲8小時)。查詢將在字段recordDateTime上。如果該日期的表cap_time中不存在「hours」值,則需要返回默認值8作爲小時數。這裏的基本查詢:
SELECT u.FullName as UserName, d2.department,
recordDateTime, ISNULL(hours,8) as hours
FROM cap_time c
left join user u on c.userID = u.userid
left join dept d2 on u.deptID = d2.DeptID
WHERE c.userid = 38 AND u.deptID = 1
我對未來10天應該是這樣的最終結果是: 日期(順序),部門,用戶名,時間
數,我可以做到這一點使用TSQL和臨時表,但我想看看這是否可以在一個聲明中完成。任何幫助表示讚賞。
你是說你想獲得接下來十天的清單,然後,無論他們是否有記錄,選擇這些日期+任何記錄這些日期可能存在嗎?或者您是否只需要在未來十天內使用任何日期(如果存在)? – ZLK
是的,確切地說。如果沒有記錄,則返回默認的8小時。 – KMBonin