0

好吧,这里是我想要完成的一小部分内容。我在 select 语句中有一个 case 语句。这是我所拥有的......:

CASE pu.Group_Value 
    WHEN 1 THEN 'A'
    WHEN 2 THEN 'B' 
    WHEN 3 then 'C' 
    WHEN 4 then 'D' 
    WHEN 5 then 'E' 
    WHEN 6 then 'F' 
    WHEN 7 then 'G' 
END AS Groups,

我遇到的问题是这个 case 语句可以有多个返回。我需要做的是能够将这些合二为一。我最终有 7 行回来了,但只需要一行,该行列中的所有 7 个字母......

谢谢!

4

2 回答 2

1

使用FOR XML PATH. 例如:

SELECT STUFF(
  (
    SELECT ','+ CASE pu.Group_Value
                  WHEN 1 THEN 'A'
                  ...
                END 
    FROM pu
    FOR XML PATH('')
  ),1,1,'') as Groups

只要确保在 CASE 逻辑中没有为 NULL 留出任何空间,否则它将使整个字符串为 NULL。

于 2012-12-27T19:46:48.710 回答
0

您可能想要做的是 GROUP BY pu.Group_Value。

此返回的行数取决于 SQL 查询的其余部分,除了您上面包含的内容。如果您只想返回一行,则 SELECT TOP 1 ... 是您最快的选择,否则您将需要更具体地使用 WHERE 子句标准或使用 GROUP BY 进行评估,这可能会改变您在您的选择。

于 2012-12-27T19:17:15.013 回答