2017-03-09 169 views
0

我有一個SQL statment這樣的選擇:如何在SQL查詢中添加一列,結果

SELECT a.link_id, a.Speed_Limit_1, a.Speed_Limit_2, a.speed_limit_source, g.autos, g.trucks, g.motorcycles, 'vehicleType' as vehicleType 

FROM g, f, d, a 

WHERE f.access_id = g.access_id 
AND d.condition_id = f.condition_id 
AND g.access_id = a.access_id 

結果:

link_id ......汽車......卡車...摩托車......... vehicleTypes


1 .......... | .......ÿ.... | .. ..Y ...... | .....ň................. | .............?

2 .......... | ....... Y .... | .... Y ...... | ..... Y ... .............. | .............?

3 .......... | ....... Y .... | .... Y ...... | ..... N ... .............. | .............?

4 .......... | ....... Y .... | .... N ...... | ..... Y ... .............. | .............?

我會加列「vehicleTypes這裏面列應該是:

0,如果汽車,卡車和摩托車被允許(例如,行2)

1,如果只是汽車被允許

2如果只有卡車被允許

3如果只有摩托車被允許

我怎樣才能做到這一點?

+0

您是從多個表中選擇?最好使用JOINS – Phil3992

+0

您還使用了哪些DBMS? – Phil3992

+0

我正在使用postgreSQL – Moehre

回答

1

這應該這樣做。 我添加了一個ELSE -1來表示它不符合任何條件。

SELECT 
    a.link_id, 
    a.Speed_Limit_1, 
    a.Speed_Limit_2, 
    a.speed_limit_source, 
    g.autos, g.trucks, 
    g.motorcycles, 

    CASE 
     WHEN g.autos = 'Y' AND g.trucks = 'Y' AND g.motorcycles = 'Y' THEN 0 
     WHEN g.autos = 'Y' AND g.trucks = 'N' AND g.motorcycles = 'N' THEN 1 
     WHEN g.autos = 'N' AND g.trucks = 'Y' AND g.motorcycles = 'N' THEN 2 
     WHEN g.autos = 'N' AND g.trucks = 'N' AND g.motorcycles = 'Y' THEN 3 
     ELSE -1 
    END as vehicleTypes 

FROM g, f, d, a 

WHERE f.access_id = g.access_id 
AND d.condition_id = f.condition_id 
AND g.access_id = a.access_id 
+0

它正在工作謝謝=) – Moehre

相關問題