我有一个查询,它返回所有条目,唯一的datetime
带有刻度:
select t.date, count(*) as Count
from table t
group by t.date having count(*) = 1
我需要一个查询,返回带有唯一datetime
的条目而不带标记。为了得到datetime
没有我正在使用的刻度:
select CONVERT(VARCHAR(19), t.date, 120), count(*) as Count
from table t
所以我期待使用查询:
select CONVERT(VARCHAR(19), t.date, 120), count(*) as Count
from table t
group by CONVERT(VARCHAR(19), t.date, 120) having count(*) = 1
但它引发了一个错误:
列“table.date”在ORDER BY子句中无效,因为它不包含在聚合函数或GROUP BY中 子句。
你知道我应该使用什么查询吗?
答案 0 :(得分:3)
每个组中有多个可能的datetime
值,而不是
ORDER BY t.date
你可以使用,例如
ORDER BY MIN(t.date)
以避免此错误。
答案 1 :(得分:2)
这很好用:
select convert(varchar(19), t.date, 120), count(*) as count
from table t
group by convert(varchar(19), t.date, 120)
having count(*) = 1
order by convert(varchar(19), t.date, 120)
答案 2 :(得分:1)
您必须在GROUP BY或聚合
中对表达式进行ORDER BYORDER BY
CONVERT(VARCHAR(19), date, 120)
示例:
SELECT
ShorterDateTime, COUNT(*)
FROM
(
select CONVERT(VARCHAR(19), date, 120) AS ShorterDateTime
from table
) t
GROUP BY
ShorterDateTime
HAVING
COUNT(*) > 1
ORDER BY
ShorterDateTime