将数据文件转换为平面文件?

Converting data file to flatfile?

我希望将数据文件转换为平面文件格式,具有多个层次维度。我提供了一个示例,但理想情况下,我希望转换未知数量的列,而层次维度将是固定的。

您需要unpivot您的数据:

SELECT unpvt.country
     , unpvt.city
     , unpvt.metrics
     , unpvt.Valuess 
FROM 
( SELECT * FROM tablename ) p
UNPIVOT ( Valuess FOR metrics IN ( snowfall , temp) ) unpvt

如果您有未知列或可变列,您可以在不使用 Dynamic SQL 的情况下动态反透视数据。请注意,我们只需要排除两个关键列... Where [key] not in ('Country','City')

例子

Select Country
      ,City
      ,Metric = B.[key]
      ,Value  = B.Value 
 From  YourTable A
 Cross Apply ( Select * 
                From  OpenJson( (Select A.* For JSON Path,Without_Array_Wrapper  )  ) 
                Where [key] not in ('Country','City')
             ) B
 

Returns

Country City    Metric      Value
US      NY      Snowfall    13
US      NY      Temp        94
US      NY      Snowfall    5
US      NY      Temp        84
UK      London  Snowfall    6
UK      London  Temp        85