如何使行中的值基于唯一值显示为列

时间:2019-05-16 03:05:50

标签: sql sql-server-2012

我想根据SQL中的否将以下各项显示为列。请帮助

const centerOfBallAfterNextTick = x + dx;
const willHitLeftWall = centerOfBallAfterNextTick - ballRadius < 0;
const willHitRightWall = centerOfBallAfterNextTick + ballRadius > canvas.width;
if (willHitRightWall || willHitLeftWall) {
    dx = -dx; //start moving in the opposite direction
}

预期结果:

Check No    Item Name
-----------------------------------
1010000001  3/4 Time Session Ale
1010000001  Aquilani Gls
1010000001  Australian Psycho 50L
1010000001  Bloody Mary
1010000001  Brookvale Ginger Beer
1010000001  Buffalo Trace
1010000001  Café Latte
1010000001  Cake Sparkling Gls
1010000001  Cap
1010000001  Capi Blood Orange
1010000001  Capi Dry Ginger
1010000002  Capi Pink Grapefruit
1010000002  Capi Soda
1010000002  Capi Sparkling Mineral
1010000002  Capi Yuzu
1010000002  Cappucino
1010000002  Carlton Draught
1010000002  Catalina Sounds Gls
1010000002  Chicken Taco
1010000002  Chivas Regal 12 Yr
1010000002  Coke
1010000002  Corona

2 个答案:

答案 0 :(得分:0)

我知道,当Item name字符串具有相同的Check No值时,您想加入它们,那么您现在使用什么数据库?如果您使用PostgreSQL,则可以使用array_agg函数来实现此功能,如下所示:

select
    check_no,
    array_to_string(array_agg(item_name),' ') as result
from
    your_table_name
group by
    check_no

答案 1 :(得分:0)

以下查询将返回您的预期结果:

SELECT [Check No], 
       Items = STUFF((SELECT ', ' + [Item Name]
                      FROM TableName AS T1
                      WHERE T1.[Check No] = T2.[Check No]
                      FOR XML PATH(''), TYPE).value('.[1]', 'varchar(max)'), 1, 2, '')
FROM TableName AS T2
GROUP BY [Check No];