【发布时间】:2015-03-13 10:28:06
【问题描述】:
对不起,标题复杂,但这是我的问题:
我有一个表格,其中包含有关工厂生产的数据。每个工厂都有两个产品和关于每种产品的生产损失的列。工厂还具有以下状态:1 表示一切正常,工厂处于全面生产状态(GrossProduction),2 表示生产限制,3 表示工厂处于维护状态。
ID | FactoryID | Status | StartTimestamp | ProductionLoss1 | ProductionLoss2 | GrossProduction1 | GrossProction2
1 | 100 | 1 |2015-01-05 12:15:00.000| 0 | 0 | 100 | 150
2 | 200 | 1 |2015-01-03 12:15:00.000| 0 | 0 | 40 | 90
3 | 100 | 2 |2015-01-29 10:00:00.000| 80 | 100 | 100 | 150
4 | 100 | 1 |2015-02-03 08:00:00.000| 0 | 0 | 100 | 150
5 | 200 | 2 |2015-02-05 08:00:00.000| 100 | 150 | 40 | 90
6 | 200 | 3 |2015-02-06 00:00:00.000| 100 | 150 | 40 | 90
.
.
.
我必须将此表更改为另一个表,其中每个日期都有自己的行以及所有产品的相应生产和丢失生产。
计算产量:
第 24 天的生产量 * GrossProction - LostProduction - LostProductionDueMaintenance
LostProduction = If status==2 Then 24 * ProductionLoss
LostProductionDueMaintenance = If status == 3 Then 24 * ProductionLoss
输出表应该是这样的:
所有工厂都应该有每个日期和相应生产数量的行。
DateKey |FactoryID| Production1 | ProductionLoss2 | LostProduction1 | LostProduction2 | LostProductionDueMaintenance1 | LostProductionDueMaintenance2
2015-01-05 | 100 | 2400 | 3600 | 0 | 0 | 0 | 0
2015-01-05 | 200 | 960 | 2160 | 0 | 0 | 0 | 0
.
.
.
2015-01-29 | 100 | 1280 | 2200 | 1120 | 1400 | 0 | 0
.
.
.
2015-02-06 | 200 | 0 | 0 | 0 | 0 | 960 | 2160
我需要编写 SQL 代码以从 Microsoft SQL Server 2012 中的上表生成此表。我有一个日期维度来帮助计算。 我认为需要循环日期和所有生产单元以及所有可能的状态,但我很迷茫该怎么做。
如果有人能给我一点帮助如何进行,将不胜感激!
【问题讨论】:
标签: sql sql-server tsql sql-server-2012 database-administration