我有多个文件的产品数量在一个给定的一天,但日期是在单独的列,而不是在行提供。
| 产品中心|2021年01月01日|2021年01月02日|
| --------------|--------------|--------------|
| 产品1| 10个|十一|
| 产品2|十一|十二岁|
这些是月度文件(30/31列),共有186 k产品和2年的数据,因此在Excel中重新处理此类文件是一项艰巨的任务。
我想要的是:
| 产品中心|日期|数量|
| --------------|--------------|--------------|
| 产品1| 2021年01月01日|10个|
| 产品1| 2021年01月02日|十一|
| 产品2| 2021年01月01日|十一|
| 产品2| 2021年01月02日|十二岁|
有没有一种方法可以在Excel或SQL中快速重新处理这些文件?我没办法了。
我尝试了笛卡尔乘法和交叉连接,但不知道如何处理列名中的日期和行中的数量。我想把日期和数量移到单独的一栏。
返工表的总行数至少为5,500,000。
2条答案
按热度按时间ej83mcc01#
假设数据反映了这个简单的示例-您可以使用动态SQL查询来创建Unpivot()语句。给定示例数据:
这个简单示例的unpivot看起来像这样:
可以生成上面的unpivot代码的动态字符串看起来像这样:
这需要指定表名、取消分组列、新的取消透视列名和新的解聚列名。
从INFORMATION_SCHEMA_COLUMNS获取原始源数据的列名。在动态代码中,我还将原始日期列名称转换为日期数据类型。源日期列是使用正则表达式模式
'__.__.____'
标识的,因为它反映了样本数据。zour9fqk2#
您可以使用PowerQuery来取消透视数据:
您必须将“Table1”替换为您的表名。