我有一个包含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"
希望可以消除歧义
答案 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;