簡體   English   中英

使用 group by 從單個表中獲取 3 個不同的列值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM