希望大家在2015年新的一年里表现不错。我正在使用nateeza / aginity api来运行以下查询。它是与case语句结合使用的sum函数。
Select ID1,ID2,SeqNo, sum(case when e.cust_no is not null then 1 else 0 end) as countofcustnumber
from tableA
left join table b on a.value1=b.value1
left join table c on b.value2=c.value2
left join table d on c.id_no=d.id_no
left join table e on d.cust_no=e.cust_no
group by id1,id2,seqno
having sum(case when e.cust_no is not null then 1 else 0 end) = 0
--having sum(case when e.cust_no is not null then 1 else 0 end) = 1
这背后的想法是使用第一个having语句来生成所有idin,id2,seqno的数据集,这些数据集没有cust_no附属于它们。如果我的逻辑是正确的,那么第二个具有当前注释掉的语句应该产生一个所有id1,id2,seqno的数据集,它们至少有一个cust_no附属于它们。
然而,当我运行这个查询时,我发现有一堆id1,id2,seqno显示在结果数据集中,对于第一个没有注释掉的语句,cust_no不为null ..
有人可以让我知道我在这里做错了什么。提前谢谢。
编辑:目前,当我使用第一个语句时,我得到以下结果:
ID1 ID2 SEQNO, COUNTOFcustnumber
a1 c1 123 0
a2 c2 456 0
但是,当我去深入了解ID a1时,其中有一堆客户与该ID相关联,我发现有客户拥有有效的客户#。这个查询的重点是找到一个ID列表,其中包含没有有效客户#的客户,如果这是有意义的话。这就是我使用countofcustnumber的原因,0表示没有客户拥有有效的客户ID。
目前在更深入的分析中,我发现如果我取第一个结果集ID = a1,ID2 = c1和SeqNo = 123,则有以下客户与a1 / c1 / 123相关。我使用以下查询来查找客户
Select ID1,ID2,SeqNo, d.id_no, e.cust_no from tableA
left join table b on a.value1=b.value1
left join table c on b.value2=c.value2
left join table d on c.id_no=d.id_no
left join table e on d.cust_no=e.cust_no
where ID1 in ('a1')
我得到了结果:
a1 c1 123 d1 3456
注意:a1是在我的帖子开始时运行查询而不是直接在上面的查询。
我期待结果:
a1 c1 123 d1 null
或
a1 c1 123 null null