2011-06-21 12 views
0

ステータスのインスタンスを現在の日付と現在の週別に都市別に数えようとしています。このコードは、ちょうど集計された選択ステートメントで、1日ごとのカウント、週別カウント

はあなたが役立つことを願って一日の合計と週の両方の合計の列の月の数を返します

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 

は(町、状態、status_dateテーブルには、わずか3列があります)。

答えて

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

これは完全に機能します。どうもありがとう! –

関連する問題