簡體   English   中英

查看兩個日期之間的記錄時,SQL Server SUM DATEDIFF和NULL

[英]SQL Server SUM DATEDIFF and NULL when looking at records between two dates

我的問題如下:

我有一個表(稱為表),其中包含列:ID,事件,開始日期,結束日期

開始日期從1900-01-01到當前日期,結束日期也是如此。 event是一個任意字符串,隨着時間的流逝,每個ID都會開始和結束多個事件(但time_只能有一個事件。

考慮一種情況,當我們想要獲取1989-01-01和2000-01-01之間的日期的記錄時。 我們希望對日期之間的差求和,以得出每個ID在進行任何活動時花費的總周數。

我的問題是數據中仍然有人對我感興趣,所以他們的結束日期為null。

我目前正在嘗試

SELECT 
    id, 
    ISNULL(enddate, 2000-01-01 sum(datediff(weeks, startdate, enddate)) AS wksdoingstuff 
WHERE 
    event IN ('something', 'somethingelse'. 'anotherthing') 
    AND BETWEEN 1989-01-01 AND 2000-01-01 
GROUP BY 
    id

我追求的是:

我想要一排排不同的ID,每個ID都有對應的事件發生幾周的相應計數

目前,我的代碼(與我在那兒寫的不完全一樣)為我提供了多個行,每個行ID匯總了他們在任何情況下經歷的每個不同時期。

您需要where子句中的where結束日期不為null,然后在返回的列中刪除其周圍的isull。 您需要對datediff psrt求和。 抱歉,我在手機上,因此無法面對輸入密碼。 如果我記得以后有鍵盤的話,我會向后擺動!

我也同意您應該在datediff中使用dd(天),否則會損失部分星期。 您始終可以將其強制轉換為十進制amd除以7.00

您應該執行此操作。

SELECT 
    id, 
     sum(datediff(weeks, startdate, ISNULL(enddate, '2000-01-01')) AS wksdoingstuff 
WHERE 
    event IN ('something', 'somethingelse'. 'anotherthing') 
    AND BETWEEN 1989-01-01 AND 2000-01-01 
GROUP BY 
    id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM