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,

私が抱えている問題は、このケースステートメントが複数のリターンを返す可能性があることです。私がする必要があるのは、これらを 1 つに結合できるようにすることです。最終的に7行が戻ってきますが、その行の列に7文字すべてが含まれる行が1つだけ必要です...

ありがとう!

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

おそらくやりたいことは、GROUPBYpu.Group_Valueです。

これによって返される行数は、上記に含めたもの以外のSQLクエリの残りの部分によって異なります。1行だけを返したい場合は、SELECT TOP 1 ...が最も早い方法です。そうでない場合は、WHERE句の基準をより具体的にするか、GROUP BYを使用して評価する必要があります。これにより、に含める列が変わる可能性があります。選択する。

于 2012-12-27T19:17:15.013 に答える