Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL对当天的多个值求和_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL对当天的多个值求和

SQL对当天的多个值求和,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,这是我的桌子 TIME Status 2012-11-15 8:30:00.000 "WAS_FLOW" 2012-11-15 9:00:00.000 "WAS_FLOW" 2012-11-15 10:30:00.000 "H2_FLOW" 2012-11-11 12:14:00.00 "O23HZ_FLOW" 2012-11-11 8:00.00.000 "AZ_FLOW" 2012-11-12 9:00.000 "BZ_FL

这是我的桌子

TIME                     Status
2012-11-15 8:30:00.000   "WAS_FLOW"
2012-11-15 9:00:00.000   "WAS_FLOW"
2012-11-15 10:30:00.000  "H2_FLOW"
2012-11-11 12:14:00.00   "O23HZ_FLOW"
2012-11-11 8:00.00.000   "AZ_FLOW"
2012-11-12 9:00.000      "BZ_FLOW"
我希望我的结果显示:

TIME         "WAS FLOW"    
2012-11-11   0
2012-11-12   0
2012-11-15   2
请尝试以下内容:

   SELECT DISTINCT  CONVERT(VARCHAR(10), a.TIME, 101),
          CASE b.COUNT WHEN NULL THEN 0 ELSE b.COUNT END AS "WAS FLOW"
   FROM MyTable AS a 
       LEFT JOIN 
            (SELECT Count(STATUS) AS "COUNT"
             FROM MyTable
             WHERE Status = 'WAS_FLOW'
             GROUP BY Time
            ) AS b
   ON a.TIME= b.TIME;

这里的其他答案都有轻微的问题。这是一个我希望能直接为你工作的盒子


演示

这不会包括结果为0的输出行,相反,这些行将不会显示。另外,我如何获取eaach的总和状态day@user1836442:更新了答案。如果没有帮助,请检查并让我知道。我想你需要说选择时间,将(状态)计数为“计数”2012-11-11 9:00.000 NULL 2012-11-12 8:00.00.000 NULL 2012-11-15 10:30:00.000 NULL 2012-11-15 12:14:00.00 NULL 2012-11-15 8:30:00.000 1 2012-11-15 9:00:00.000 1我得到这个错误“将nvarchar数据类型转换为datetime数据类型导致值超出范围”。为什么要将时间存储为字符串?我强烈建议将其存储为datetime数据类型。如果不能,则可以使用
LEFT(time,10)
而不是
DATEADD
计算。
SELECT
  DATEADD(DAY, DATEDIFF(DAY, 0, [time]), 0)             AS [date],
  SUM(CASE WHEN status = 'WAS_FLOW' THEN 1 ELSE 0 END)  AS [count]
FROM
  yourTable
GROUP BY
  DATEADD(DAY, DATEDIFF(DAY, 0, [time]), 0)
SELECT CAST(TIME AS date) AS TIME,
       COUNT(CASE WHEN Status = 'WAS_FLOW' THEN Status END) AS 'WAS_FLOW'
FROM dbo.your_table
GROUP BY CAST(TIME AS date)