2017-01-24 11 views
0

値:にチェックビットのカンマ区切りのリストを作成する私は、次のような表を持っている

私は真(もしそうならしているビット値のカンマ区切りのリストを作成する必要があるストアドプロシージャを使用して
CREATE TABLE [dbo].[TestTable] (
    [Id]      INT  NOT NULL, 
    [FoodCard]     BIT    NULL, 
    [FuelCard]     BIT    NULL, 
    [GoCard]     BIT    NULL, 
    [Created]     DATETIME  NOT NULL, 
    [CreatedBY]     VARCHAR (150) NOT NULL, 
    [Modified]     DATETIME  NULL, 
    [ModifiedBy]    VARCHAR (150) NULL, 
    [PaymentTotal]    DECIMAL (10, 2) NULL 
); 

FuelCardは私の結果はFuel Cardだろうが、FuelCardとFoodCardが1だった場合、私の結果はFuel Card, Food Cardになり1だった。私の実際のテーブルでは、私はで動作するように、約12ビットの値を持っている。私は長いシリーズにしてやって考えた

カンマで区切られたリストを作成するには大文字/小文字のステートメントを使用しますが、そうすることは非常に悪い習慣です。問題をお手伝いしますか?

+0

カンマ区切りの列の値またはカンマ区切りの列名が必要ですか? –

答えて

2

あなたはこのようcaseでこれを行うことができます。

select stuff((case when FoodCard = 1 then ', FoodCard' else '' end) + 
       (case when FuelCard = 1 then ', FuelCard' else '' end) + 
       (case when GoCard = 1 then ', GoCard' else '' end) + 
       . . ., 
       1, 2, '') as cardList 

stuff()', 'として最初の2つの文字を削除します。

関連する問題