私はテーブルを持っていますdbo.participation
:
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
User VARCHAR(MAX) NOT NULL,
ParticipationLevel TINYINT NOT NULL,
Selector VARCHAR(MAX) NOT NULL,
DateCreated DATETIME NOT NULL
以下のコードを作成しましたが、残念ながら、@DateStart
および@DateStop
SELECT
dateadd(month, datediff(month, 0, DateCreated), 0) AS MDate
,COUNT(CASE WHEN ParticipationLevel >= 10 THEN Selector ELSE NULL END) AS ParticipationLevel1
,COUNT(CASE WHEN ParticipationLevel >= 30 THEN Selector ELSE NULL END) AS ParticipationLevel2
FROM
Participation
WHERE
(@DateStart IS NULL OR (@DateStart IS NOT NULL
AND DateCreated >= @DateStart))
AND (@DateEnd IS NULL OR (@DateEnd IS NOT NULL
AND DateCreate < @DateEnd))
GROUP BY
Dateadd(month, datediff(month, 0, DateCreate), 0)
私のコードを改善する方法、またはパフォーマンスを改善するためにテーブルを変更する方法について何か考えはありますか?