Запрос, чтобы сделать каждую строку в один ряд - PullRequest
0 голосов
/ 02 июля 2018

Проблема : я должен сделать каждую строку столбцом, используя оператор SQL.

Исходная таблица

Colour_id   Colour_desc Value1_min  Value1_max  Value2_min  Value2_max
1           Green          0          0.499        0        0.299
2           Amber          0.5        0.8         0.03      0.05

Я хочу, чтобы вывод выглядел следующим образом:

Value1_min_Green    Value1_max_Green    Value2_min_Green    Value2_max_Green    Value1_min_Amber    Value1_max_Green    Value2_min_Amber    Value2_max_Green
0                     0.499               0                 0.299          0.5                       0.8                0.03                           0.05

Любой подход или предложение, чтобы получить выше результат в качестве результата?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы можете использовать условное агрегирование:

select max(case when colour_desc = 'green' then value1_min end) as value1_min_green,
       max(case when colour_desc = 'green' then value2_min end) as value2_min_green,
       max(case when colour_desc = 'amber' then value1_min end) as value1_min_amber,
       max(case when colour_desc = 'amber' then value2_min end) as value2_min_amber
from t;

Добавление дополнительных цветов довольно просто - и на самом деле не требует дополнительных накладных расходов, поскольку запрос уже выполняет агрегирование.

0 голосов
/ 02 июля 2018

Объедините значение 2 строк в выводе 1 строки (source - это имя таблицы):

select green.Value1_min as Value1_min_Green green.Value1_max as Value1_max_Green,
       green.Value2_min as Value2_min_Green green.Value2_max as Value2_max_Green,
       amber.Value1_min as Value1_min_Amber amber.Value1_max as Value1_max_Amber,
       amber.Value2_min as Value2_min_Amber amber.Value2_max as Value2_max_Amber
  from source as green, source as amber
 where amber.Colour_desc = 'Amber'
   and green.Colour_desc = 'Green'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...