我想在ms-sql服务器上执行一个简单的查询,该查询在mysql中工作正常,但在Microsoft上似乎是不可能的。

工作良好:

SELECT COUNT(event_date) AS Amount, event_date, DATE_FORMAT(event_date,'%y-%m-%d') AS Timestep
FROM JRLOG
GROUP BY Timestep;


仅当我从查询中删除event_date字段时有效

SELECT COUNT(event_date) AS Amount, event_date, FORMAT(event_date,'yyyy-MM-dd') AS Timestep
FROM [JRLOG]
GROUP BY FORMAT(event_date,'yyyy-MM-dd');


为什么不能在MSSQL的GROUP部分中使用虚拟的Timestep字段?

我收到MSSQL错误:


  event_date列在选择列表中无效,因为它不包含在聚合函数中,也不在GROUP BY子句中


是否有可能在SELECT查询中带上event_date或其他字段?

最佳答案

我想你的意思是:

SELECT COUNT(event_date) AS Amount, event_date, FORMAT(event_date,'yyyy-MM-dd') AS Timestep
FROM [JRLOG]
GROUP BY event_date,FORMAT(event_date,'yyyy-MM-dd');


要么

SELECT COUNT(event_date) AS Amount, MIN(event_date), FORMAT(event_date,'yyyy-MM-dd') AS Timestep
FROM [JRLOG]
GROUP BY FORMAT(event_date,'yyyy-MM-dd');

07-28 02:51
查看更多