0

私はそのようなテーブル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 でこれを行う方法を考えられる場合は、お知らせください。ありがとう。

4

1 に答える 1

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
于 2012-11-06T19:51:54.370 に答える