2011-06-21 31 views
0

我試圖根據當天和本週按城鎮分組來統計狀態的實例。按分組選擇語句按日計數

(該表有僅有3列:鎮狀態,status_date)

SELECT 
    MAX(dbo.Clients.Town) AS Town, 
    CASE 
     WHEN MAX(datepart(wk, status_date)) = DATEPART(wk, getdate()) THEN COUNT(Town) 
     ELSE 0 
    END AS wkTotal, 
    CASE 
     WHEN MAX(CONVERT(date, status_date, 106)) = CONVERT(date, getdate(), 106) THEN COUNT(Town) 
     ELSE 0 
    END AS dayTotal 
FROM 
    dbo.Clients 
WHERE 
    dbo.Clients.Status LIKE 'Status 1%' 
    AND MONTH(GETDATE()) = MONTH(dbo.Clients.Status_date) 
    AND YEAR(GETDATE())= YEAR(dbo.Clients.Status_date) 
GROUP BY 
    dbo.Clients.Town 
ORDER BY 
    dbo.Clients.Town 

此代碼只是返回白天總與周總列

希望能幫到你一個月算。

回答

1

我surgest你這樣做:

SELECT dbo.Clients.Town AS Town, 
count(*) AS wkTotal, 
sum(CASE WHEN datepart(dayofyear, status_date) = DATEPART(dayofyear, getdate()) THEN 1 ELSE 0 END) AS dayTotal 
FROM dbo.Clients 
WHERE dbo.Clients.Status LIKE 'Status 1%' AND 
datepart(week, GETDATE()) = datepart(week, dbo.Clients.Status_date) 
AND YEAR(GETDATE())= YEAR(dbo.Clients.Status_date) 
GROUP BY dbo.Clients.Town 
ORDER BY dbo.Clients.Town 
+0

很好的代碼! – niktrs

+0

這很好。非常感謝! –