0

对不起复杂的称号,但在这里,从表中的行创建表是我的问题:的日期与开始日期列

我有了关于生产厂家的数据表。每个工厂都有两个产品和每个产品的生产损失列。工厂还具有以下状态: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中我有一个日期维度来帮助计算。 我认为需要循环日期和所有生产单位以及所有可能的状态,但我完全不知道该怎么做。

如果有人可以给我一点帮助如何进行它将不胜感激!

回答

0

看看PIVOT声明。从2015-01-05 12:15:00.000到2015-01-05,您可以使用CONVERT声明。可能不需要循环。

相关问题