[英]using group by to getting 3 different column values from a single table
我已經嘗試過這段代碼,但沒有得到任何應用程序,請幫助我提前致謝
SELECT PositionName,
(SELECT COUNT(ApplicationNo) FROM APPLICATION) AS
NoOfApplications,
(SELECT COUNT(ApplicationNo)
FROM APPLICATION
WHERE EligibleStatus1=1 AND
EligibleStatus2=1) AS Qualified,
(SELECT COUNT(ApplicationNo)
FROM APPLICATION
WHERE EligibleStatus1=2 OR
EligibleStatus2=2) AS DisQualified
FROM APPLICATION
GROUP BY PositionName ORDER BY PositionName
PositionName Elligible Disqualified NoOfApplications
A 3 4 7
B 3 4 7
C 3 4 7
PositionName Elligible Disqualified NoOfApplications
A 1 2 3
B 1 1 2
C 1 1 2
SELECT a.PositionName,COUNT(a.ApplicationNo) AS
NoOfApplications,apl1.Qualified,apl2.DisQualified
FROM APPLICATION a
INNER JOIN (
SELECT PositionName, COUNT(ApplicationNo) AS Qualified
FROM APPLICATION
WHERE EligibleStatus1=1 AND
EligibleStatus2=1
GROUP BY PositionName
)apl1 ON a.PositionName=apl1.PositionName
INNER JOIN (
SELECT PositionName, COUNT(ApplicationNo) AS DisQualified
FROM APPLICATION
WHERE EligibleStatus1=1 AND
EligibleStatus2=1
GROUP BY PositionName
)apl2 ON a.PositionName=apl2.PositionName
GROUP BY PositionName ORDER BY PositionName
SELECT Positionname,
Count(NoOfApplication) AS NoOfApplications,
Max(COUNT1) AS Qualified,
Max(COUNT2) AS Diqualified
FROM APPLICATION A
CROSS APPLY (SELECT Count(NoOfApplication) AS COUNT1
FROM APPLICATION A
WHERE EligibleStatus1 = 1
AND EligibleStatus2 = 1)B
CROSS APPLY (SELECT Count(NoOfApplication) AS COUNT2
FROM APPLICATION A
WHERE EligibleStatus1 = 2
OR EligibleStatus2 = 2)C
GROUP BY PositionName
當您正在尋找匯總結果時,通過使用 Case 和 Sum 我們可以根據您假設的數據獲得所需的結果
select PositionName,
sum(case when EligibleStatus1 = 1 AND EligibleStatus2=1 then 1 else 0 end) AS Qualified,
sum(case when EligibleStatus1 = 2 OR EligibleStatus2=2 then 1 else 0 end) AS DisQualified,
count(ApplicationNo)
from APPLICATION
GROUP BY PositionName
ORDER BY PositionName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.