gpt4 book ai didi

sql - T-SQL,如何执行此分组查询?

转载 作者:行者123 更新时间:2023-12-03 17:40:33 25 4
gpt4 key购买 nike

我对此信息有一个看法:

TableA (IDTableA, IDTableB, IDTableC, Active, date, ...)

对于 TableA 中的每个寄存器和 tableC 中的每个寄存器,我希望 tableB 的寄存器具有最大日期并且处于事件状态。

select IDTableA, IDtableC, IDTableB, Date, Active
from myView
where Active = 1
group by IDTableA, IDTableC
Having Max(Date)
order by IDTableA;

此查询适用于 SQLite,但如果我在 SQL Server 中尝试此查询,我会收到一条错误,指出 IDTableBselect 不包含在 group 子句中。

我知道理论上 SQLite 中的第一个查询不应该工作,但还是要这样做。

如何在 SQL Server 中执行此查询?

谢谢。

最佳答案

根据 SQL 92,如果使用 GROUP BY 子句,则在 SELECT 输出表达式列表中只能使用 GROUP BY 中提到的列> 列表或任何其他列,但它们必须包装在聚合函数中,例如 count()sum()avg()max()min()so on .

像 MSSQL、Postgres 这样的一些服务器对此规则非常严格,但例如 MySQL 和 SQLite 则非常宽松和宽容 - 这就是它让您感到惊讶的原因。

长话短说 - 如果您希望它在 MSSQL 中工作,请遵守 SQL92 要求。

关于sql - T-SQL,如何执行此分组查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14786764/

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