繁体   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