如何按列名加入

时间:2012-11-06 16:58:37

标签: sql join sybase

我有一张表T1,

gsdv   |nsdv  |esdv
-------------------
228.90 |216.41|0.00

和表T2这样

ds                 |nm
--------------------------
'Non-Revenue Sales'|'ESDV'
'Gross Sales'      |'GSDV'
'Net Sales'        |'NSDV'

如何获得下表?

ds                 |nm    |val
---------------------------------
'Non-Revenue Sales'|'ESDV'|0.00
'Gross Sales'      |'GSDV'|228.90
'Net Sales'        |'NSDV'|216.41

我知道我可以使用以下

执行此操作
SELECT ds,nm,esdv val FROM T1,T2 WHERE nm = 'esdv'
UNION
SELECT ds,nm,gsdv val FROM T1,T2 WHERE nm = 'gsdv'
UNION
SELECT ds,nm,nsdv val FROM T1,T2 WHERE nm = 'nsdv'

但我正在寻找更通用/更好的解决方案。我正在使用Sybase,但如果你能想到用其他DBMS做这个的方法,请告诉我。 感谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用CASE。这看起来像

SELECT ds,nm,(CASE WHEN nm = 'esdv' THEN esdv WHEN nm = 'gsdv' THEN gsdv WHEN nm = 'nsdv' THEN nsdv END) val FROM T1,T2