SQL: разделить разные элементы в столбце, чтобы создать уникальные столбцы - PullRequest
0 голосов
/ 15 октября 2018

Я не эксперт по SQL и немного застрял.У меня есть таблица базы данных, которая выглядит следующим образом:

Date        | Equipment | Downtime
------------+-----------+---------
2018-10-03  | PLC       |   0
2018-10-03  | Robo      |   0
2018-10-04  | PLC       | 108
2018-10-04  | Robo      |   0

Для системы, которую я создаю, мне нужно составить диаграмму, используя эту таблицу, но мне нужно разделить столбец оборудования, чтобы он был таким же, как этот:

Date        | Robo(Time)  | PLC(Time)
------------+-------------+----------
2018-10-03  |  0          | 0
2018-10-04  |  108        | 0

Итак, я храню данные в третьей строке в столбце, названном в честь соответствующего содержимого во второй строке.Кто-нибудь знает, как это можно сделать?Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Другой способ сделать это - присоединиться к таблице за саму дату:

select PLC.date,
    Robo.Downtime as [Robo(Time)],
    PLC.Downtime as [PLC(Time)]
FROM table as Robo INNER JOIN table as PLC ON Robo.Date = PLC.Date 
    AND Robo.Equipment = 'Robo' AND PLC.Equipment = 'PLC'

Примечание. Я полностью определил PLC.date, но вы можете указать и другой.Вам просто нужно выбрать один, потому что, поскольку вы присоединяетесь к себе, в противном случае это неоднозначно.

0 голосов
/ 15 октября 2018

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

select date, 
       max(case when Equipment = 'PLC' then Downtime end) as PLC,
       max(case when Equipment = 'Robo' then Downtime end) as Robo
from table t
group by date;
...