【发布时间】:2014-06-10 05:31:24
【问题描述】:
我有一个包含 2 个字段的表格:
Datetime [IndexValue]
--------- -----------
2014-02-23 20:15:59.000 G
2014-02-23 20:15:59.000 G
2014-02-23 20:15:59.000 Y
2014-03-05 12:42:59.683 R
2014-03-05 12:42:59.683 G
2014-03-05 12:42:59.683 Y
2014-03-05 12:42:59.683 G
我想按名称、“count”和“SUM”对它们进行分组
Datetime [IndexValue] amount total
--------- ----------- ------ ------
2014-02-23 20:15:59.000 G 2 3
2014-02-23 20:15:59.000 Y 1 3
2014-03-05 12:42:59.683 G 2 4
2014-03-05 12:42:59.683 Y 1 4
2014-03-05 12:42:59.683 R 1 4
我使用此代码成功,但只是在 MySQL 中,SQL Server 2008 中出现错误
SELECT
CONVERT(varchar,[CreateDate],101),[IndexValue],
COUNT(*) AS amount,
(SELECT COUNT(*) AS total FROM [db_spc].[dbo].[tb_crqs_item])
FROM [db_spc].[dbo].[tb_crqs_item]
GROUP BY CONVERT(varchar,[CreateDate],101),[IndexValue]
ORDER BY CONVERT(varchar,[CreateDate],101)
如何在 SQL Server 中编写查询?
【问题讨论】:
-
我不明白你的子查询在做什么? (SELECT COUNT(*) AS total FROM [db_spc].[dbo].[tb_crqs_item])。它为外部查询的每一行计算表中的所有记录?你能澄清一下吗?
-
因为如果我使用这个:(SELECT COUNT(*) AS total FROM [db_spc].[dbo].[tb_crqs_item] GROUP BY CONVERT(varchar,[CreateDate],101))。然后出现错误“子查询返回超过 1 个值,不允许”
-
很好,这是一场“猜猜我用这段代码会遇到什么错误”的竞赛。奖励是什么?
-
我的意思是如何计算“总计”?
-
您说您收到“SQL 2008 中的错误”,但不是什么错误。您希望回答者使用测试数据设置 sql server 2008 环境并运行您的查询以找出问题所在?如果您说出您遇到的错误,那么获得帮助会容易得多。
标签: sql-server count sum grouping