Sql server 与Group by子句上的计数记录相关的问题
我有一个数据库表,其中包含Sql server 与Group by子句上的计数记录相关的问题,sql-server,Sql Server,我有一个数据库表,其中包含StudentId(int)、Subject(varchar(50))、Marks(int)、IsPass(int)、ExamDate(Datetime) 对于不同日期的特定学生,表中可以有多个相同科目的记录 我写了以下查询: select StudentId, Count(IsPass) from ExamEntry where IsPass =1 group by StudentId 但不希望查询中的Where条件: 可能是这样的: Select Studen
StudentId(int)、Subject(varchar(50))、Marks(int)、IsPass(int)、ExamDate(Datetime)
对于不同日期的特定学生,表中可以有多个相同科目的记录
我写了以下查询:
select StudentId, Count(IsPass)
from ExamEntry
where IsPass =1 group by StudentId
但不希望查询中的Where条件:
可能是这样的:
Select StudentId, case when IsPass = 1 then count(IsPass) end
from ExamEntry
group by studentId
但它显示了不止一项针对特殊学生的记录
我怎样才能实现我的目标
SELECT StudentId,
COUNT(CASE WHEN IsPass = 1 THEN 'X' END) AS NumberOfPasses
FROM ExamEntry
GROUP BY StudentId
计数
仅计数非空
值,且大小写
具有隐式否则为空
计数
仅计数非空
值,并且大小写
有一个隐式的否则为空
也许您需要这样的东西
SELECT StudentId, SUM(CASE WHEN IsPass = 1 THEN 1 ELSE 0 END) AS Number_Of_Passed_Exams
FROM ExamEntry
GROUP BY StudentId
也许你需要这样的东西
SELECT StudentId, SUM(CASE WHEN IsPass = 1 THEN 1 ELSE 0 END) AS Number_Of_Passed_Exams
FROM ExamEntry
GROUP BY StudentId
若您不想使用where子句,那个么Having子句是其最简单的替代方法 试试这个
select StudentId, count(IsPass)AS PassedCount
from ExamEntry
group by StudentId,IsPass
having IsPass= 1
若您不想使用where子句,那个么Having子句是其最简单的替代方法 试试这个
select StudentId, count(IsPass)AS PassedCount
from ExamEntry
group by StudentId,IsPass
having IsPass= 1
答案很简单,没人看到:——)
答案很简单,没人看到:——)
@雷蒙:好主意。由于字段名(IsPass)和问题中提到“=1”,所以我没有把它放在这里。我猜是0还是1。这似乎与c#应用程序有关。我不知道如果绑定到c#:1或-1中的组合会存储什么?我没有给予足够的注意:(@Remou:好主意。我没有把它放在那里,因为字段名(IsPass)和问题提到“=1”。我猜是0或1。这似乎链接到了一个c#应用程序。我不知道如果绑定到c#中的组合:1或-1,会在其中存储什么。我没有充分注意:(