2013-11-14 5 views
0

Из этого кода возможно, что для locationid 5,6,7,8 он будет во второй строке, а не продолжен?Преобразование строк в столбцы в mysql v3

SELECT 
    MAX(case when locationid = '1' then floatvalue end) Flow, 
    MAX(case when locationid = '2' then floatvalue end) Level, 
    MAX(case when locationid = '3' then floatvalue end) Pressure, 
    MAX(case when locationid = '4' then floatvalue end) MR, 
    MAX(case when locationid = '5' then floatvalue end) Flow, 
    MAX(case when locationid = '6' then floatvalue end) Level, 
    MAX(case when locationid = '7' then floatvalue end) Pressure, 
    MAX(case when locationid = '8' then floatvalue end) MR 
FROM table 

Таким образом, вместо этого:

Flow | Level | Pressure | MR | Flow | Level | Pressure | MR | 
10 | 20 | 30  | 40 | 100 | 200 | 300 | 400 | 

это понравится:

Flow | Level | Pressure | MR | 
10 | 20 | 30  | 40 | 
100 | 200 | 300 | 400 | 
+0

нет. вы не можете написать что-то в sql, которое будет производить две записи из одной. если вы хотите отобразить две строки, тогда поместите эту логику в клиентское программное обеспечение. –

ответ

1

Вы ищете что-то вроде этого?

SELECT MAX(CASE WHEN locationid = 1 THEN floatvalue END) Flow, 
     MAX(CASE WHEN locationid = 2 THEN floatvalue END) Level, 
     MAX(CASE WHEN locationid = 3 THEN floatvalue END) Pressure, 
     MAX(CASE WHEN locationid = 4 THEN floatvalue END) MR 
    FROM table1 
WHERE locationid IN(1, 2, 3, 4) 
UNION ALL 
SELECT MAX(CASE WHEN locationid = 5 THEN floatvalue END), 
     MAX(CASE WHEN locationid = 6 THEN floatvalue END), 
     MAX(CASE WHEN locationid = 7 THEN floatvalue END), 
     MAX(CASE WHEN locationid = 8 THEN floatvalue END) 
    FROM table1 
WHERE locationid IN(5, 6, 7, 8) 

Вот SQLFiddle демо

+0

У профсоюза все есть предел? – hearmeroar

+0

@hearmeroar Извините, я не совсем понимаю, что вы подразумеваете под * у профсоюза все есть предел? *. Можете ли вы немного уточнить, чего хотите достичь? – peterm

+0

Я имею в виду оператор select, который я могу использовать для объединения всех, есть ли предел? как только до 5 заявлений можно использовать для объединения всех – hearmeroar

Смежные вопросы