如果我有两列:
$('pre').click(function() {
$(this).toggleClass('hidden')
})
然后我按col1,col2进行分组,然后为数据中的每个组合(存在)得到一行。
我的问题是,我并不总是拥有所有组合,但是我仍然想返回每个组合的一行。因此,如果没有组合。例如2-> 1,那么我希望它的值为0。
我可以以某种方式指定分组的“级别”吗?
我正在使用SQL Oracle。
我想要的结果是:
col1 col2 amount
1 2 15
2 3 12
1 3 10
3 1 4
3 2 3
及其各自的数量,如果不存在则为0,否则为null。 (我有一个过滤器来排除col1和col2相同的地方)
答案 0 :(得分:1)
使用cross join
生成所有行,然后过滤所需的行:
select c1.col1, c2.col2, coalesce(t.amount, 0)
from (select 1 as co1l from dual union all
select 2 as co1l from dual union all
select 3 as co1l from dual
) c1 cross join
(select 1 as co12 from dual union all
select 2 as co12 from dual union all
select 3 as co12 from dual
) c2 left join
t
on t.col1 = c1.col1 and t.col2 = c2.col2
where c1.col1 <> c2.col2;