1

すべての行を 1 つにマージする SQL クエリがあります。

私がしようとしているのは、最初にカスタムのみを設定することです。

私の問題は、新しい値ごとに常に繰り返すことです。

どうすれば修正できますか?

前もって感謝します

ここに私のコードがあります:

SELECT 
   STUFF ((SELECT 'Please Select' + ' : ' + Name
          FROM Option
          ORDER BY Name
          FOR XML PATH('')), 1, 2, '') MergeResult

私が必要とする私の結果は次のようなものです:

選択してください: オプション 1 - オプション 2 - オプション 3 など........

現時点で得られるものは次のとおりです。

選択してください: オプション 1 - 選択してください: オプション 2 - 選択してください: オプション 3

4

2 に答える 2

1

このようなもの :

SELECT 
    'Please Select' + ' : ' + 
    STUFF ((SELECT Name
          FROM [Option]
          ORDER BY Name
          FOR XML PATH('')), 1, 2, '') MergeResult

つまり、プレフィックスを外側に移動します

于 2013-11-01T12:50:54.013 に答える
1

これを行うにはいくつかの方法があります。

Select を外側に移動します。

DECLARE @Option AS TABLE ([Name] varchar(30))
INSERT INTO @Option([Name])
VALUES ('Option1'), ('Option2'), ('Option3')


SELECT 'Please Select : ' + LEFT(Options, LEN(Options) - 2)
FROM 
(
    SELECT Name + ' - '
    FROM @Option
    ORDER BY Name
    FOR XML PATH('')
) o (Options)

COALESCE の方法もあります。

DECLARE @Option AS TABLE ([Name] varchar(30))
INSERT INTO @Option([Name])
VALUES ('Option1'), ('Option2'), ('Option3')

DECLARE @Names VARCHAR(8000) 
SELECT @Names = COALESCE(@Names + ' - ', '') + Name 
FROM @Option
SELECT 'Please Select : ' + @Names
于 2013-11-01T12:53:56.700 に答える