将数据文件转换为平面文件?
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
我希望将数据文件转换为平面文件格式,具有多个层次维度。我提供了一个示例,但理想情况下,我希望转换未知数量的列,而层次维度将是固定的。
您需要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