如何将多个语句组合成一个?

时间:2012-12-27 19:14:03

标签: sql sql-server sql-server-2008-r2

好的,这是我想要完成的一些内容。我在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,

我遇到的问题是这个案例陈述可以有多个回复。我需要做的是能够将它们合二为一。我最终有7行回来了,但只需要一行,在行列中包含所有7个字母......

谢谢!

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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

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