将多列上的数据拆分为行(在SQL或SAS中)(Split data over multiple columns into rows (in SQL or SAS))

编程入门 行业动态 更新时间:2024-10-27 02:17:46
将多列上的数据拆分为行(在SQL或SAS中)(Split data over multiple columns into rows (in SQL or SAS))

我有以下形式的数据:

Country City1 City2 City3 AverageTemperature UK London Glasgow Manchester 15 Italy Rome Naples Venice 25 Germany Munich Berlin 20 USA New York 25

无论是SQL还是SAS数据步骤,我都想以这种形式获取数据:

Country City AverageTemperature UK London 15 UK Glasgow 15 UK Manchester 15 Italy Rome 25 Italy Naples 25 Italy Venice 25 Germany Munich 20 Germany Berlin 20 USA New York 25

这样我就可以跨越各行。 我已经考虑通过循环遍布城市不空白的三个城市列来实现这一目标,但我不确定如何自信地做到这一点 - 是否可以使用SQL或SAS轻松完成? 只是一个指针将非常感激。

I have data in the following form:

Country City1 City2 City3 AverageTemperature UK London Glasgow Manchester 15 Italy Rome Naples Venice 25 Germany Munich Berlin 20 USA New York 25

With either SQL or a SAS data step, I would like to get the data in this form:

Country City AverageTemperature UK London 15 UK Glasgow 15 UK Manchester 15 Italy Rome 25 Italy Naples 25 Italy Venice 25 Germany Munich 20 Germany Berlin 20 USA New York 25

So that I have the data across individual rows. I have thought about doing this by looping over the three city columns where the city is not blank, but I'm not sure how to confidently do this - is it easily done with either SQL or SAS? Just a pointer would be greatly appreciated.

最满意答案

SELECT COUNTRY, City1, AverageTemperature FROM Table_Name UNION ALL SELECT COUNTRY, City2, AverageTemperature FROM Table_Name UNION ALL SELECT COUNTRY, City3, AverageTemperature FROM Table_Name

要获取City列不为null的行,您可以执行以下操作

SELECT COUNTRY, City1, AverageTemperature FROM Table_Name WHERE City1 IS NOT NULL UNION ALL SELECT COUNTRY, City2, AverageTemperature FROM Table_Name WHERE City2 IS NOT NULL UNION ALL SELECT COUNTRY, City3, AverageTemperature FROM Table_Name WHERE City3 IS NOT NULL SELECT COUNTRY, City1, AverageTemperature FROM Table_Name UNION ALL SELECT COUNTRY, City2, AverageTemperature FROM Table_Name UNION ALL SELECT COUNTRY, City3, AverageTemperature FROM Table_Name

To get rows where City column is not null you can do something like this

SELECT COUNTRY, City1, AverageTemperature FROM Table_Name WHERE City1 IS NOT NULL UNION ALL SELECT COUNTRY, City2, AverageTemperature FROM Table_Name WHERE City2 IS NOT NULL UNION ALL SELECT COUNTRY, City3, AverageTemperature FROM Table_Name WHERE City3 IS NOT NULL

更多推荐

本文发布于:2023-07-24 13:25:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1246296.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   SAS   SQL   将多列上   Split

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!