Deine Tabelle dcmtag enthält ja, vereinfacht, dies:
Code:
test=*# select * from elephant ;
value | id
-------+----
100 | 1
200 | 2
300 | 3
400 | 4
(4 Zeilen)
Wenn ich in Deine Abfrage so darauf anwende, aber aus der ersten Zeile ein "select *" mache und die letzten 2 Zeilen weglasse (also bei Dir diese Zeilen:
WHERE "tagtable0002,0000".sopinstanceuid = "tagtable0008,0020".sopinstanceuid
AND "tagtable0008,0020".sopinstanceuid = "tagtable0008,0021".sopinstanceuid
dann erhalte ich ich dies:
Code:
test=*# select * from (select value as col1, id from elephant where id=1) as tab1, (select value as col2, id from elephant where id=2) as tab2, (select value as col3, id from elephant where id=3) as tab3;
col1 | id | col2 | id | col3 | id
------+----+------+----+------+----
100 | 1 | 200 | 2 | 300 | 3
(1 Zeile)
Was würde denn Deine Abfrage, nach meinem Schema verändert, bringen? Laß mich raten: eine der "sopinstanceuid" - Spalten enthält NULL, und Du hättest (vermutlich) mehrere Zeilen.
Lösung:
Code:
test=*# select sum(case when id=1 then value else NULL end) as col1, sum(case when id=2 then value else NULL end) as col2, sum(case when id=5 then value else NULL end) as col5 from elephant;
col1 | col2 | col5
------+------+------
100 | 200 |
(1 Zeile)
Und so eine Geschichte mit CASE WHEN ... ELSE ... END habe ich schon nun zum 3. Mal diese Woche gezeigt.
Andreas
Lesezeichen