0

Supposed I have the query:

SELECT names, color
FROM my_dataset
WHERE date='2013-07-18'

And this outputs:

John    0
David   1
Mary    0
Bill    0
Joe     2

The problem is that the 'color' column are Intergers. Is it possible to feed in a key/feature map somewhere so the output can be (0=GREEN, 1=BLUE, 3=RED) instead??

4

4 に答える 4

2

それはあなたのSQL方言に依存します。たとえばcase、MS SQL で使用できます。

select names, 
       case color 
           when 0 then 'green' 
           when 1 then 'blue' 
           when 2 then 'red' 
           else null 
       end as color 
from my_dataset

Oracleにはdecode関数があります。

または、キー/名前のマッピングを使用してテーブルを作成し、それをデータと結合します。

于 2013-07-20T03:15:54.780 に答える
2

使用できますCASE

SELECT 
  names,
  CASE color 
    WHEN 0 then 'Green'
    WHEN 1 then 'Blue'
    WHEN 2 then 'Red'
  ELSE '???' END 
As 
  Color
FROM 
  my_dataset
WHERE 
  date='2013-07-18'
于 2013-07-20T03:16:03.873 に答える
1

使用するdecode

SELECT names, DECODE( color, 0, 'GREEN',
                             1, 'BLUE',
                             2, 'RED',
                      'UNKNOW'
                    ) as true_color
FROM my_dataset
WHERE date='2013-07-18'
于 2013-07-20T03:14:58.980 に答える
0

When case数字にエイリアスを与えることで句を使用できます

SELECT names,(CASE color
                     WHEN 0 THEN 'GREEN' 
                     WHEN 1 THEN 'BLUE'
                     WHEN 3 THEN 'RED'
                     ELSE '' END
                ) AS color
FROM my_dataset WHERE date='2013-07-18'
于 2013-07-20T03:17:39.040 に答える