更正查询以返回1行,而不是当多列中的2列为常数时重复

时间:2018-11-08 00:27:56

标签: sql informix

我有一个包含2个常量列和另一个具有不同值的列的查询。

我遇到一个notifyix查询问题,其中对于相同的ID和名称,由于第三个选择导致重复,因此我返回的行数超过1。

例如,我的查询如下

...

结果查询返回3行。每行的值都为A,B或C。id和名称始终相同并且相同。

基本上不希望返回1行并填充所有列,而是返回3,因为不同的z.value条件

如果可以的话,我想将3行合并为1。我必须缺少一些简单或愚蠢的东西,可以轻松解决此问题。请帮助 :) 谢谢


抱歉,我添加了示例查询的结果,以更好地解释它在做什么与我想要的内容

我得到的结果

...

我想要的结果

select
x.id,
x.name
case when (y.tag = 'a') then z.value else '' as A
case when (y.tag = 'b') then z.value else '' as B
case when (y.tag = 'c') then z.value else '' as C
...

From
table x,
join table y on (x.<something> = y.<something>)
join table z on (y.<something> = z.<something>)

Where
x.name = "Test"

希望可以消除歧义

1 个答案:

答案 0 :(得分:0)

我怀疑您只是想聚合:

select x.id, x.name
       max(case when (y.tag = 'a') then z.value end) as A,
       max(case when (y.tag = 'b') then z.value end) as B,
       max(case when (y.tag = 'c') then z.value end) as C,
       ...
from table x join
     table y
     on (x.<something> = y.<something>) join
     table z
     on (y.<something> = z.<something>)
where x.name = 'Test'
group by x.name, x.id;