【发布时间】:2011-12-09 21:34:33
【问题描述】:
我在这里看到很多不适合我的情况的论坛。我有
Col_1、Col_2、Col_3、Col_n 对 错 错 错 假 真 真 假 对 错 错 对我需要创建一个 select 语句,它返回具有以下结果的新列:
New_Column Col_1 Col_2, Col_3 Col_1, Col_n换句话说,如果列是True,则将列名添加到我的新列中。所以我的结果集看起来像:
myID、myName、myDesc、Col_1、Col_2、Col_3、Col_n、New_Column
我试过了:
SELECT
myID,
myName,
myDesc,
((CASE WHEN col_1 = 'TRUE' THEN 'col_1' END) + ', ' + (CASE WHEN col_2 = 'TRUE' THEN 'col_2' END) + ', ' + (CASE WHEN col_3 = 'TRUE' THEN 'col_3' END) + ', ' + (CASE WHEN col_n = 'TRUE' THEN 'col_n' END) ) as New_Column
FROM myTable
但结果集不正确。如何通过给我的设计获得我需要的结果集?
当我说结果不正确时,我的意思是:
myID、myName、myDesc、Col_1、Col_2、Col_3、Col_n、New_Column
数据,数据,真,假,假,真,空
数据,数据,假,Col_2,Col_3,假,空
数据、数据、Col_1、Null、Null、Col_n、Col_1Col_2Col_3Col_n
这是我所期望的:
myID、myName、myDesc、Col_1、Col_2、Col_3、Col_n、New_Column
数据,数据,Col_1,Col_2,NULL,Col_N,Col_1Col_2Col_N
【问题讨论】:
-
……嗯,对于初学者来说,她会得到比她可能想要的更多的逗号,因为那些不是有条件的……在 MySQL 中,
group_concat可以工作,但我没有认为这适用于 MS-SQL Server。 -
对某些记录返回值、值、真、真、假、空。对于其他记录,它显示 value、value、Col_1、Null、Col_3、Null、Null,在这种情况下,New_Column 应该是 value、value、Col_1、Null、Col_3、Null、Col_1 和 Col_3。有时它返回 value, value, col_1, col_2, null, null, (col_1,col_2,col_3,col_n)
-
如果您要投反对票...请同时投票结束或解释原因。这可能是一项因可怕的要求而产生的任务,但这是一项非常特殊(而且不是很容易)的任务,已经以明确的方式提出(在尝试了某事之后)。
-
非常感谢 pst - 我真的很清楚,我做了研究,但如有必要,我可以提供更多细节。这个东西的问题是它不允许你进行太多的格式化,这很耗时。
标签: sql sql-server sql-server-2005