-1

我在 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
4

1 回答 1

2

为了获得结果,您需要为每个系列生成所有类别的列表。您可以使用 CROSS JOIN 来获得结果:

select distinct c.category, s.series
from yourtable s
cross join yourtable c

一旦你有了这个,那么你可以将它加入到你的桌子categoryseries

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;

请参阅带有演示的 SQL Fiddle

于 2013-08-05T23:33:49.907 回答