Group by 和 DateAdd 以及简单的计算 SQL 服务器
Group by and DateAdd and simple computations SQL Server
这是我的table和查询
Table 1
AsOfDate Value
2015-06-06 11:08:21.247 5
2015-06-06 12:08:21.247 7
2015-06-07 10:08:21.247 8
2015-06-08 11:08:21.247 8
2015-06-08 10:09:21.247 9
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1 group by DateOnly
我收到一条错误消息 "Invalid column name 'DateOnly'."
完成它的最佳方法是什么?
你必须group by DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate]))
。很遗憾,您不能在 group by
子句中使用别名。
将您的查询更改为:
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1 group by DateOnly
至
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1 group by DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate]))
别名 DateOnly
为查询级别所知(仅在其顶部)
这里DateOnly
是列别名。所以在 GROUP BY
中使用表达式本身 like
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1
group by DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate]))
您使用了不正确的方法从 datetime
数据中截取时间部分。如果您使用支持 date
数据类型的 SQL 服务器版本,只需使用 CAST(AsOfDate as date)
或者您可以使用:CAST(CAST(AsOfDate as int) as datetime)
所以查询可以是这样的:
SELECT CAST(AsOfDate as date) as DateOnly ,Min([Value])
FROM Table1
GROUP BY CAST(AsOfDate as date)
这是我的table和查询
Table 1
AsOfDate Value
2015-06-06 11:08:21.247 5
2015-06-06 12:08:21.247 7
2015-06-07 10:08:21.247 8
2015-06-08 11:08:21.247 8
2015-06-08 10:09:21.247 9
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1 group by DateOnly
我收到一条错误消息 "Invalid column name 'DateOnly'."
完成它的最佳方法是什么?
你必须group by DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate]))
。很遗憾,您不能在 group by
子句中使用别名。
将您的查询更改为:
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1 group by DateOnly
至
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1 group by DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate]))
别名 DateOnly
为查询级别所知(仅在其顶部)
这里DateOnly
是列别名。所以在 GROUP BY
中使用表达式本身 like
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate])) as DateOnly ,Min([Value])
FROM Table1
group by DATEADD(dd, 0, DATEDIFF(dd, 0, [AsOfDate]))
您使用了不正确的方法从 datetime
数据中截取时间部分。如果您使用支持 date
数据类型的 SQL 服务器版本,只需使用 CAST(AsOfDate as date)
或者您可以使用:CAST(CAST(AsOfDate as int) as datetime)
所以查询可以是这样的:
SELECT CAST(AsOfDate as date) as DateOnly ,Min([Value])
FROM Table1
GROUP BY CAST(AsOfDate as date)