2013-10-01 2 views
3

Я пытаюсь решить следующие задачи:Объединить столбцы в результате из SQL SELECT

У меня есть таблица со столбцом TIMESTAMP и три колонки для различных типов переменных. Столбцы со значениями заполняются случайным образом в соответствии с условиями. Так это выглядит следующим образом:


smpl_time   float_val   num_val   str_val
15:31                                     NULL             NULL
15:32                   NULL               15,4                 NULL
15:33                 NULL                 NULL             Disabled

То, что я хотел бы достичь, это результат, который будет объединять все VAL полей в одном столбце и сортирует их в зависимости от времениStamp:


smpl_time merge_val
15:31              
15:32                 15.4
15:33                 Disabled



До сих пор у меня есть ВЫБРАТЬ только для одного типа вал, глядя, как это (он содержит также другие поля из таблицы, которые являются общими для каждой записи):

SELECT s.smpl_time AS Time,s.float_val AS Value, e.name AS Severity, m.name AS Status 
FROM sample s JOIN channel c ON c.channel_id=s.channel_id JOIN severity e ON 
e.severity_id=s.severity_id JOIN status m ON m.status_id=s.status_id WHERE 
s.channel_id='id' AND smpl_time BETWEEN TIMESTAMP 'startTime' AND TIMESTAMP 'stopTime'; 


У кого-нибудь есть идея, как это сделать или если это возможно?

Приветствия,

Майк

ответ

2

Предполагая, что для любой данной строки используется только один из трех столбцов, используйте функцию COALESCE.

SELECT smpl_time, COALESCE(float_vaL, num_val, str_val) AS merge_val 
    FROM ... 
+0

IIRC Если первая строка привела к междунар и второй в типе полукокса вам потребуется приведение к типу, который поддерживается как (например, полукокс) –

+0

@ AlexK.You являются правильными. –

+0

Отлично, спасибо большое !!! – user2835433

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