2017-01-24 43 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是1我的結果將是Fuel Card,但如果FuelCard和FoodCard是我的結果將是Fuel Card, Food Card在我的實際表中我有大約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()刪除前兩個字符,這爲', '