[英]Combine column from multiple rows into single row
我一直在尝试创建一个返回活动使用历史列表的查询。 一个订单可以应用于多个广告系列。
orderId CampaignName DiscountAmount ----------------------------------- 1 50% Off $5.20 1 10% Off $1.30 1 5% Off $0.57
如何创建一个返回单行多列的查询?
orderId Campaign1 Campaign2 Campaign3 Discount1 Discount2 Discount3 ---------------------------------------------------------------------- 1 50% Off 10% Off 5% Off $5.20 $1.30 $0.57
如果每个 orderId 有一个已知的或最大数量的活动,请考虑与row_number()
一起使用一个简单的条件聚合
例子
Declare @YourTable Table ([orderId] int,[CampaignName] varchar(50),[DiscountAmount] varchar(50)) Insert Into @YourTable Values
(1,'50% Off','$5.20')
,(1,'10% Off','$1.30')
,(1,'5% Off','$0.57')
Select orderId
,Campaign1 = max(case when RN=1 then CampaignName end)
,Campaign2 = max(case when RN=2 then CampaignName end)
,Campaign3 = max(case when RN=3 then CampaignName end)
,Discount1 = max(case when RN=1 then DiscountAmount end)
,Discount2 = max(case when RN=2 then DiscountAmount end)
,Discount3 = max(case when RN=3 then DiscountAmount end)
From (
Select *
,RN = row_number() over(partition by orderId order by (select null))
From @YourTable
) A
Group By OrderID
退货
orderId Campaign1 Campaign2 Campaign3 Discount1 Discount2 Discount3
1 50% Off 10% Off 5% Off $5.20 $1.30 $0.57
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.