[英]Counting Distinct values from Sql Table
以下是我桌子的視圖...
我很難從查詢中獲得想要的結果。
我的要求如下圖所示
它應滿足以下條件:1)在開始日期和結束日期之內。
2)沒有待定。
3)是的。
4)否+是總計。
5)僅基於一種調查類型。
這是我為上面提到的1到4條件嘗試過的結果,但是如何隱含5條件呢?
SELECT DISTINCT Userid
,CASE
WHEN [YES] IS NULL
THEN 0
ELSE [YES]
END AS Completed
,CASE
WHEN [NO] IS NULL
THEN 0
ELSE [NO]
END AS Pending
,(
CASE
WHEN [YES] IS NULL
THEN 0
ELSE [YES]
END + CASE
WHEN [NO] IS NULL
THEN 0
ELSE [NO]
END
) AS Total
FROM (SELECT DISTINCT Userid
,SurveyStatus
,COUNT(ParcelId) AS cnt
FROM ParcelAllocationsurvivor
WHERE DateAllocated >= '2013-08-01'
AND DateAllocated <= '2013-08-07'
GROUP BY Userid
,SurveyStatus
) AS p
PIVOT(max(cnt) FOR surveystatus IN ([YES],[NO])) AS pvt
ORDER BY Userid
有人可以幫我嗎?
提前致謝////
您可以在子查詢中添加where
子句:
SELECT Userid, (case when [YES] is null then 0 else [YES] end) as Completed,
(case when [NO] is null then 0 else [NO] end) as Pending,
(case when [YES] is null then 0 else [YES] end +
case when [NO] is null then 0 else [NO] end
) as Total
FROM (SELECT Userid, SurveyStatus, COUNT(ParcelId) as cnt
FROM ParcelAllocationsurvivor
WHERE DateAllocated >= '2013-08-01' and DateAllocated <='2013-08-07' and
SurveyType = 'Survey1'
group by Userid, SurveyStatus
) AS p
PIVOT(max(cnt) FOR surveystatus IN([YES],[NO])) AS pvt order by Userid;
順便說一句, select distinct
是多余的。 您不需要此查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.