在SQL Select中将值设置为列名

时间:2015-11-26 06:46:16

标签: mysql

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

DEPARTMENT(表):

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

进一步你可以在SO中检查这些, MySQL pivot table

答案 1 :(得分:0)

如果您正在使用MS SQL,您可以使用FOR XML Path('')语句并创建dymanic 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作为变量的长度;但你可以根据自己的喜好改变它。

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