首页 > 解决方案 > 将产品线 UpTime/DownTime 分解为季度总计 SQL

问题描述

我有一张桌子,我们叫tableA。表 A 具有以下列:

 TableA
|  Date  |  Line   |  UpTime  | DownTime  |

对于每个日期,都有一条产品线具有相应的正常运行时间和停机时间。我需要将这些数据分解为每种产品的总数,然后对每个季度进行分析。下表将是最终表的示例。

|  Line  |  UpTime  |  DownTime  |  TotalTime  |  UpTime%  |
| Prod. A|  5000    |   3000     |    8000     |  62.5%    |
|   Q1   |  2500    |   1500     |    4000     |  62.5%    |
|   Q2   |  2500    |   1500     |    4000     |  62.5%    |
| Prod B |  5700    |   1200     |    6900     |  82.6%    |
|   Q1   |  3000    |   400      |    3400     |  88.2%    |
|   Q2   |  2700    |   800      |    3500     |  77.1%    |
etc. etc. for each product

如上所示,当您看到一条带有“Prod A”或“Prod B”的行时,Uptime、DownTime 和 TotalTime 都是第 1 季度和第 2 季度的总和。在每条“Prod X”行下方,时间被分成四等份。我有一个查询要返回每个产品的总数,但不知道如何进一步将其细分为四等分。如果第 3 季和第 4 季也出现,这也不是一件坏事。到目前为止,这是我的代码:

SELECT 
Line,
sum(UpTime) as 'UpTime',
sum(Downtime) as 'DownTime',
sum(uptime + downtime) as 'TotalTime'
FROM TableA
group by Line
order by line

此代码返回所有产品总数。我需要添加什么来进一步将其分解为四等分?

标签: sqlsql-servertimesumtimestamp

解决方案


你试过用 ROLLUP 吗?

SELECT Line,
       DATEPART(QUARTER, [Date]),
       sum(UpTime) as 'UpTime',
       sum(Downtime) as 'DownTime',
       sum(uptime + downtime) as 'TotalTime'
FROM TableA
GROUP BY Line, 
         DATEPART(QUARTER, [Date]) WITH ROLLUP
ORDER BY Line

推荐阅读