很抱歉复杂的标题,但这是我的问题:
我有一张表,其中包含有关工厂生产的数据。每个工厂都有两个关于每种产品的生产损失的产品和专栏。工厂还有一个状态,其中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 =如果状态== 2那么24 * ProductionLoss
LostProductionDueMaintenance =如果状态== 3那么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中的上表生成此表。我有一个日期维度来帮助计算。 我认为需要循环日期和所有生产单位以及所有可能的状态,但我很遗憾该怎么做。
如果有人能给我一些帮助,我将非常感谢!