簡體   English   中英

SQL Server 2008 Count(Distinct CASE?

[英]SQL Server 2008 Count(Distinct CASE?

SELECT     
    ScheduleDays = COUNT(DISTINCT(CAST(datediff(d, 0, a.ApptStart) AS datetime)))
FROM 
    Appointments a
WHERE   
    ApptKind = 1 AND 
    --filter on current month
    a.ApptStart >= ISNULL(DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0),'1/1/1900')   AND
    a.ApptStart < ISNULL(DATEADD(month, DATEDIFF(month, 0, GETDATE())+1, 0),'1/1/3000')AND
    --filter all days that aren't Friday, and then give you all Fridays that have an hour > 12.
    DATENAME(weekday, a.ApptStart) <> 'Friday' and DATEPART(hour, a.ApptStart) > 12 AND
    --Filter on doctor
    a.ResourceID in (201)

此查詢將查看約會開始時間而不計算星期五,因為我們的文檔僅在星期五工作半天。 有人告訴我,我們確實想要計算它們,但只有半天(第一次我被告知排除它們大聲笑)。

有人可以幫我一個案例陳述,這個陳述將計算在周六12點之后沒有預約的星期五半天嗎? 我相信它必須進入ScheduleDays=COUNT(DISTINCT(CAST(datediff(d,0,a.ApptStart) as datetime))) 也許我們可以把星期五和之后的12個過濾器放在那里,而不是在where子句中,如果我們要使用案例的話。 ScheduleDays=COUNT(DISTINCT CASE WHEN etc 。我非常感謝幫助。

你無法用count計算一半的東西,所以這不是要走的路。 但是,你可以用算術做到這一點。 我認為這樣的事情:

select (count(distinct (case when DATENAME(weekday, a.ApptStart) <> 'Friday'
                             then cast(a.apptstart as date)
                        end)
             ) +
        0.5 * count(distinct (case when DATENAME(weekday, a.ApptStart) = 'Friday'
                                   then cast(a.apptstart as date)
                              end)
                   )
       ) as ScheduleDays

如果文檔僅在星期五工作半天,我認為您不需要檢查約會時間。 當然,如果您願意,可以將其添加到第二個count

請注意,為了計算天數,我使用了將datetime date轉換為datetime的簡單語法。

編輯:

小時檢查:

select (count(distinct (case when DATENAME(weekday, a.ApptStart) <> 'Friday'
                             then cast(a.apptstart as date)
                        end)
             ) +
        0.5 * count(distinct (case when DATENAME(weekday, a.ApptStart) = 'Friday' and  DATEPART(hour, a.ApptStart) <= 12 
                                   then cast(a.apptstart as date)
                              end)
                   )
       ) as ScheduleDays

暫無
暫無

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

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