sql-server - 如何减少 10 多个 union select 语句

标签 sql-server union

我需要从单个表的 10 多列中提取单列数据。除了堆叠 10 多个联合选择语句之外,还有其他方法可以做到这一点,而不需要为每列重复联合选择语句吗?

我可以通过堆叠 10 多个 select 语句来获得它,如下所示:

select 'column_5' from table_a
union
select 'column_6' from table_a  
union 
select 'column_7' from table_a
union
.
.
.
union
select 'column_18' from table_a

感谢您提前抽出时间:)

最佳答案

使用Cross ApplyUnPivot您可以避免多个UNION语句

select Distinct COL
from table 
Cross apply
(
values 
(column_1),
(column_2),
..
..
(column_18)
) 
CS (COL) 

注意:由于您使用了UNION,所以我在select中保留了Distinct。如果您不想删除重复项,请从 select

中删除 Distinct

关于sql-server - 如何减少 10 多个 union select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131085/

相关文章:

mysql - 如何将table1中的table2更新为table2中的相应条目?

mysql 表联合和新列

sql - sql server上的索引重建

sql-server - 如何在 .cfc 文件中的一个 DELETE 语句中从多个表中删除?

sql-server - 为什么在 MS SQL 中是 'No math function In Where Clause'?

mysql - 带条件的多个表的SQL查询

mysql - 计算联合中的不同列并显示在同一行中

sql - 从数据子集中选择

sql-server - 如何向 Azure SQL Server 中的用户授予权限

mysql - 合并两个表并按两个表中都存在的公共(public)字段(例如名称)进行排序