【问题标题】:Combine multiple value into 1 for Impala SQLImpala SQL 将多个值合并为 1
【发布时间】:2021-10-06 03:27:30
【问题描述】:

我想将多个产品条目合并为 1,并将它们的价格相加。目前,数据库如下所示:

Name                Product               Price
Zack                Vanilla Twist         1
Jane                Lolipop               0.5
Zack                Lolipop               0.5
Zack                Candymint             0.5
Jane                ChocoLoco LM          1.5

我想把它的外观改成这样:

Name                Product                                 sum(Price)
Zack                Vanilla Twist, Lolipop, Candymint       2
Jane                Lolipop, ChocoLoco LM                   2

如何使用 Impala SQL 做到这一点?

【问题讨论】:

    标签: sql impala hue


    【解决方案1】:

    此查询适用于 MySQL,这可能会对您有所帮助。

    select Name, group_concat(`product` separator ', ') Product, sum(Price)
    from tempt
    group by Name
    order by Name desc
    

    dbfiddle here

    【讨论】:

    【解决方案2】:
    declare @temp table (Name varchar(50), product varchar(50), Price decimal(3,1))
    insert into @temp values ('Zack','Vanilla Twist',1)
    insert into @temp values ('Jane','Lolipop',0.5)
    insert into @temp values ('Zack','Lolipop',0.5)
    insert into @temp values ('Zack','Candymint',0.5)
    insert into @temp values ('Jane','ChocoLoco LM',1.5)
    
    -- No cursor, Whil loop, or User defined function:
    SELECT 
      Name,
      STUFF((
        SELECT ', ' + product 
        FROM @temp 
        WHERE (name = Results.name) 
        FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
      ,1,2,'') AS Product
      ,sum(Price) as [Sum(Price)]
    FROM @temp Results
    GROUP BY name
    

    输出:

    Name    Product                             Sum(Price)
    Jane    Lolipop, ChocoLoco LM               2
    Zack    Vanilla Twist, Lolipop, Candymint   2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多