繁体   English   中英

在SQL Select中将值设置为列名

[英]Set a Value as a Column Name in SQL Select

假设我从表中进行选择后有一个值列表:

部门(表):

+-----------+---------+-----------+-----------+
| DEPT_NAME | DEPT_ID | DEPT_CITY | DEPT_TYPE |
+-----------+---------+-----------+-----------+
|           |         |           |           |
+-----------+---------+-----------+-----------+

现在,我的SELECT查询应该是:

SELECT DEPT_NAME,DEPT_ID,DEPT_CITY from LOCATIONS table where (external condition);

我认为可以使用数据透视表来完成。

请检查此教程http://www.artfulsoftware.com/infotree/queries.php#78

进一步,您可以在SO本身, MySQL数据透视表中检查这些

如果您使用的是MS SQL,则可以使用FOR XML Path('')语句并按以下方式创建动态SQL查询:(我无权访问其他SQL管理系统,因此我不知道这是否适用于他们。

DECLARE @columns varchar(255) = (select ',' + [Column] FROM (Values('DEPT_NAME'),('DEPT_ID'),('DEPT_CITY'),('DEPT_TYPE')) as tColumns([column])FOR XML PATH(''))
--select @columns

DECLARE @stmt varchar(255) = 'Select 1 as DummyColumn ' + @columns + ' from LOCATIONS table where (external condition);'
--select @stmt
EXEC(@stmt)

在这种情况下,我使用255作为变量的长度; 但您可以根据自己的喜好将其更改。

(Values('DEPT_NAME'),('DEPT_ID'),('DEPT_CITY'),('DEPT_TYPE'))作为tColumns([column])是内联值表; 您需要用正确的select语句替换它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM