Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
一个月内每天的MSSQL总计_Sql_Sql Server_Sql Server 2008_Tsql_Pivot - Fatal编程技术网

一个月内每天的MSSQL总计

一个月内每天的MSSQL总计,sql,sql-server,sql-server-2008,tsql,pivot,Sql,Sql Server,Sql Server 2008,Tsql,Pivot,我正在尝试做一些与我以前问过的问题非常相似的事情,但我似乎无法让它正常工作。这是我先前的问题: 该表如下所示: Table Name: Totals Date |Program label |count | | 2013-04-09 |Salary Day |4364 2013-04-09 |Monthly |6231 2013-04-09 |Policy

我正在尝试做一些与我以前问过的问题非常相似的事情,但我似乎无法让它正常工作。这是我先前的问题:

该表如下所示:

              Table Name: Totals
Date       |Program label   |count
           |                |    
2013-04-09 |Salary Day      |4364
2013-04-09 |Monthly         |6231
2013-04-09 |Policy          |3523
2013-04-09 |Worst Record    |1423
2013-04-10 |Salary Day      |9872
2013-04-10 |Monthly         |6543
2013-04-10 |Policy          |5324
2013-04-10 |Worst Record    |5432
2013-04-10 |Salary Day      |1245
2013-04-10 |Monthly         |6345
2013-04-10 |Policy          |5431
2013-04-10 |Worst Record    |5232
Date      |Salary Day |Monthly |Policy |Worst Record
2013-04-9 |23456      |63241   |23521  |23524
2013-04-10|45321      |72535   |12435  |83612
我的问题是:使用MSSQL 2008-是否有一种方法可以让我获得当月每个程序标签每天的总计数。正如你所看到的,有时它会一天运行两次。我需要能够解释这一点

输出应如下所示:

              Table Name: Totals
Date       |Program label   |count
           |                |    
2013-04-09 |Salary Day      |4364
2013-04-09 |Monthly         |6231
2013-04-09 |Policy          |3523
2013-04-09 |Worst Record    |1423
2013-04-10 |Salary Day      |9872
2013-04-10 |Monthly         |6543
2013-04-10 |Policy          |5324
2013-04-10 |Worst Record    |5432
2013-04-10 |Salary Day      |1245
2013-04-10 |Monthly         |6345
2013-04-10 |Policy          |5431
2013-04-10 |Worst Record    |5232
Date      |Salary Day |Monthly |Policy |Worst Record
2013-04-9 |23456      |63241   |23521  |23524
2013-04-10|45321      |72535   |12435  |83612
使用如下表运算符:

SELECT  *
FROM Totals AS t
PIVOT
(
   SUM(count)
   FOR [Program label] IN ([Salary Day], 
                           [Monthly], 
                           [Policy], 
                           [Worst Record])
) AS p;
在行动中看到它:

这将为您提供:

|       DATE | SALARY DAY | MONTHLY | POLICY | WORST RECORD |
-------------------------------------------------------------
| 2013-04-09 |       4364 |    6231 |   3523 |         1423 |
| 2013-04-10 |      11117 |   12888 |  10755 |        10664 |
试试这个-

SELECT 
    date
    , [Salary Day] = SUM(CASE when [Program label] = 'Salary Day' then COUNT end)
    , [Monthly] = SUM(CASE when [Program label] = 'Monthly' then COUNT end) 
    , [Policy] = SUM(CASE when [Program label] = 'Policy' then COUNT end) 
    , [Worst Record] = SUM(CASE when [Program label] = 'Worst Record' then COUNT end)  
FROM Totals
GROUP BY [Date];
试试这个

select Date,
  sum(case when [Program label] = 'Salary Day' then count else 0 end) [Salary Day],
  sum(case when [Program label] = 'Monthly' then count else 0 end) [Monthly],
  sum(case when [Program label] = 'Policy' then  count else 0 end) [Policy],
  sum(case when [Program label] = 'Worst Record' then count else 0 end) [Worst Record]
from Totals Group by [Date];

我使用了你的答案,因为它是最简单的,对我来说,即使我已经编辑了很多。谢谢。:)谢谢我从这件事中学到了一些新的东西:)非常有用的答案。我还没有选择使用它,因为我还没有完全适应它。虽然我肯定会用我未来的查询来测试这个。