我在sql db中有这样的表。
Category Series Value
1 A 100
2 B 200
2 C 300
如何选择这样投射?
Category Series Value
1 A 100
1 B 0
1 C 0
2 A 0
2 B 200
2 C 300
答案 0 :(得分:2)
为了获得结果,您需要生成每个系列的所有类别的列表。您可以使用CROSS JOIN来获得结果:
select distinct c.category, s.series
from yourtable s
cross join yourtable c
完成此操作后,您可以在category
和series
上将其加入到您的表格中:
select sc.category,
sc.series,
coalesce(t.value, 0) value
from
(
select distinct c.category, s.series
from yourtable s
cross join yourtable c
) sc
left join yourtable t
on sc.series = t.series
and sc.category = t.category;