【发布时间】:2014-09-24 21:26:21
【问题描述】:
我正在尝试格式化结果,以便合并的结果显示为重复的列。很抱歉没有很好地解释这一点,希望这个简化的例子能更好地展示:
select * from (
SELECT Id,
SKU,
BrandName,
ItemName ,
StoreName as Store1,
Qty as Qty1,
null as Store2,
null AS Qty2,
where Stores.Id = 1
UNION ALL
SELECT Id,
SKU,
BrandName,
ItemName ,
null as Store1,
null as Qty1,
StoreName as Store2,
Qty as Qty2
where Stores.Id = 3
)as x
group by x.Id, etc...
因此,通过在查询中使用“虚拟”列,我可以返回几乎看起来像我想要的数据:
Id | SKU | Brand | ItemName | Store1 | Qty1 |Store2 | Qty2
------+-----------+--------+---------------+-----------+------+---------+-----
4441 | 15JE1215 | Ibanez | Metallic Grey | NULL | NULL | Exeter | 1
4441 | 15JE1215 | Ibanez | Metallic Grey | London | 895 | NULL | NULL
我想将这两行合并为 1,即将 NULL 替换为另一行的值。我看着 PIVOT,但我的大脑融化了。
【问题讨论】:
-
你不能在这里使用 FULL OUTER JOIN 而不是 UNION,例如加入上面示例的 Id、SKU、品牌、ItemName。完整的外部将处理只有一个商店具有该组列的条目的情况,但如果这种情况永远不会发生,您可以使用 INNER JOIN 代替。
-
辛苦了。如果您将其添加为答案,我会将其标记为正确。
标签: sql-server-2008 pivot union