我有一张桌子看起来像这样:

ID State Name State Value City Name City Value
1 Indiana 8.0 Gary 5.0
2 Florida 9.0 Miami 2.0

我想输出一个如下所示的表:

ID Name Value
1 State, Indiana 8.0
2 City, Gary 5.0
3 State, Florida 9.0
4 City, Miami 2.0

我试图通过groupby来解决这个问题,但这只是整体输出唯一行,而不是基于多列唯一值创建唯一行.

推荐答案

你可以使用union all:

select concat('State, ', StateName) as Name, StateValue as Value
from table_name
union all
select concat('State, ', CityName) as Name, CityValue as Value
from table_name;

Sql相关问答推荐

如何在VB.NET中使用MS SYS根据开始和结束期间日期进行查询

从列的不同值创建列

在Postgres中实现合并功能的干净方法,因为当目标/源不匹配时

从自定义日期和时间开始,每月具有给定状态的公司数量

将重复的值更新为下一个空闲数字

从字符串中删除";1、";和";2,";,而不删除";11、";和";12、";

PostgreSQL抽奖查询

如何实现同一列的递归计算?

向表中添加新列取决于表的日期列(unpivot)

使用 Oracle SQL Developer 将不同的列值转换为列会导致错误 ORA-01489

如何根据 SQL 中的阈值标记一个集群中的所有值?

DB2 SQL查询结果多余数据

验证某个日期前后的连续代码

在没有订单的情况下,如何生成一个值为0的顾客天数行

MariaDB非常简单的MATCHAGAINST查询不使用FULLTEXT索引吗?

根据是否存在值组合分组并 Select 行

函数调用作为插入值语句中的参数

使用 GROUP BY 时如何创建其他组?

将 MERGE 语句与 Oracle PL/SQL 表类型一起使用时,导致无效数据类型错误的原因是什么?

pyspark 将列转换为行