2015-03-13 106 views
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聲明。可能不需要循環。

相關問題