【问题标题】:SUM of a column when values equal set value值等于设定值时的列的总和
【发布时间】:2017-06-27 10:38:11
【问题描述】:

我正在尝试获取另一列值等于某些值的列的总和,这就是我现在的工作方式

SELECT [Date]= CONVERT(char(10), CURRENT_TIMESTAMP, 103), Items = SUM(NumberOfItems), WorkstationID 
FROM [DB].[DB].[dbo].[SortStatistics]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM' AND WorkstationID = 'D11' 
GROUP BY WorkstationID
SELECT [Date]= CONVERT(char(10), CURRENT_TIMESTAMP, 103), Items = SUM(NumberOfItems), WorkstationID 
FROM [DB].[DB].[dbo].[SortStatistics]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM' AND WorkstationID = 'D12' 
GROUP BY WorkstationID
SELECT [Date]= CONVERT(char(10), CURRENT_TIMESTAMP, 103), Items = SUM(NumberOfItems), WorkstationID 
FROM [DB].[DB].[dbo].[SortStatistics]
WHERE RecordedPeriod Between '06/23/17 01:00:00AM' and '06/23/17 23:59:00PM' AND WorkstationID = 'D13' 
GROUP BY WorkstationID

这是我的结果

 Date       Items   WorkstationID
 26/06/2017 14886   D11

 Date       Items   WorkstationID
 26/06/2017 12973   D12

 Date       Items   WorkstationID
 26/06/2017 12124   D13

我希望看到这个结果

 Date       Items   Sorter
 26/06/2017 39983   DUAL    

列数据类型如下

Items, INT
WorkstationID, Varchar(4)

【问题讨论】:

  • 打印DUAL的条件是什么?
  • 我只是在显示统计数据的来源......埃里克刚刚回答了下面的问题......谢谢

标签: sql sql-server sql-server-2008


【解决方案1】:

不清楚您希望'DUAL' 来自哪里,但您可以只使用一个查询:

SELECT [Date] = CONVERT(char(10), CURRENT_TIMESTAMP, 103),
       Items = SUM(NumberOfItems),
       'DUAL' as Sorter 
FROM [DB].[DB].[dbo].[SortStatistics]
WHERE RecordedPeriod >= '2017-06-23 01:00:00' AND
      RecordedPeriod <  '2017-06-24' AND
      WorkstationID IN ('D11', 'D12', 'D13')

【讨论】:

  • 只是想添加 DUAL……我刚刚遇到错误……',' 附近的语法不正确。也只是尝试 ('D11'+'D12'+'D13') ,当我这样做时,结果为 NULL
  • 将最后一行改为WorkstationID IN ('D11', 'D12', 'D13')
猜你喜欢
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
相关资源
最近更新 更多