【问题标题】:Creating table with dates as rows from table with start date column从具有开始日期列的表中创建日期为行的表
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2022-08-19
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      相关资源
      最近更新 更多