gpt4 book ai didi

sql-server-2008 - SQL 查询 - 同一列上的多个 COUNT 具有来自嵌套 SELECT 查询的不同值

转载 作者:行者123 更新时间:2023-12-04 13:06:05 25 4
gpt4 key购买 nike

我正在努力使用正确的 SQL 语法来返回一列中特定值的计数。

此查询有效(可能语法不正确,但 SQL Server 2008 似乎很高兴)

SELECT StudentID, count(UnApproved)as Late, count(Unapproved) as Absent from results
WHERE unapproved=1 and StudentID in
(
SELECT studentid FROM [Results]
WHERE StudentYearLevel='10' and Date > 20130101) group by StudentID
)

当然,两者都是 LateAbsent由于“where”所在的位置,列返回相同的值。

因此,它所做的是(从右侧)确定属于“10 年级”成员的学生的 ID。

然后,对于返回的每个学生 ID,我需要它返回记录的未批准缺勤类型为 1 的未批准缺勤计数,并在下一列中返回类型为 2 的未批准缺勤计数。

如果我尝试像这样提交查询:-
SELECT StudentID, count(UnApproved)as Late where unapproved=2, count(Unapproved) as Absent from results 
where unapproved=1 and StudentID in
(
SELECT studentid FROM [Results] where StudentYearLevel='10' and Date > 20130101
)
group by StudentID

SQL Server 破解了它,并用红色强调了几乎整个查询。

我需要结束这三列:-
StudentID | Late | Absent
以及具有适当计数的学生 ID 的三列。

我可以执行大多数基本的选择查询,但是当涉及到嵌套查询、联合、联接、内部查询时,我就无法理解了。非常感激任何的帮助。我绝不确定我的(工作)查询在任何方面都是正确结构的,'因为我是一个黑客。

最佳答案

SELECT StudentID, 
SUM(case when Unapproved =1 then 1 else 0 end) as Late,
SUM(case when Unapproved =2 then 1 else 0 end) as Absent
from results where
StudentID in (SELECT studentid FROM [Results] where StudentYearLevel='10' and Date > 20130101)
group by StudentID

关于sql-server-2008 - SQL 查询 - 同一列上的多个 COUNT 具有来自嵌套 SELECT 查询的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com