使用group by从单个表中获取3个不同的列值

时间:2015-08-28 10:24:54

标签: sql sql-server

我已经尝试过这段代码但是没有申请,请提前帮助我

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

3 个答案:

答案 0 :(得分:0)

    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  

答案 1 :(得分:0)

Private Sub Supplier_name_DblClick(Cancel As Integer)
    strSQL = "Select * from [Query1] where"
    strSQL = strSQL & "[Supplier_name] ="'" & "Me!current record![Supplier_name]" &"'"
    Form![Mainform]![Subform2].Form.RecordSource = strSQL
End Sub

答案 2 :(得分:0)

当你正在寻找摘要结果然后通过使用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