Преобразование нескольких строк в столбцы с определенным именем столбца - PullRequest
0 голосов
/ 29 марта 2019

У меня есть несколько предметов, которые выпускаются (I-UN) и расходуются (W-WS) регулярно в разные даты / время.Я собирался сохранять время транзакции для каждого времени (W-WS минус I-UN), поэтому для его выполнения мне нужны Дата I-UN и W-WS в отдельных столбцах.

Вот что у меня есть:

    ItemID  Type    Date
    441455  I-UN    3/24/19 8:00
    441455  W-WS    3/24/19 8:09
    441455  I-UN    3/24/19 9:47
    441455  W-WS    3/24/19 9:51
    441455  I-UN    3/24/19 12:20
    441455  W-WS    3/24/19 12:26
    441455  I-UN    3/24/19 15:50
    441455  W-WS    3/24/19 15:53

Вот что я пытаюсь достичь:

    ItemID  I-UN Date       W-WS Date
    441455  3/24/19 8:00    3/24/19 8:09
    441455  3/24/19 9:47    3/24/19 9:51
    441455  3/24/19 12:20   3/24/19 12:26
    441455  3/24/19 15:50   3/24/19 15:53

Есть ли способ запросить, чтобы получить желаемый результат?Ваша помощь будет принята с благодарностью.Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Вы можете попытаться сделать полное соединение по номеру предмета и row_number(), упорядоченному по времени.

SELECT t1.itemid [ItemID],
       t1.date [I-UN Date],
       t2.date [W-WS Date]
       FROM (SELECT itemid,
                    date,
                    row_number() OVER (ORDER BY date) r#
                    FROM elbat
                    WHERE type = 'I-UN') t1
            FULL JOIN (SELECT itemid,
                              date,
                              row_number() OVER (ORDER BY date) r#
                              FROM elbat
                              WHERE type = 'W-WS') t2
                      ON t1.itemid = t2.itemid
                         AND t1.r# = t2.r#;

дб <> скрипка

Или, возможно, внутреннее соединение, если вам нужны пары, в которых есть оба раза (или левое или правое соединение, если вы хотите убедиться, что все времена взяты для одного из них).

0 голосов
/ 29 марта 2019

Выполните самосоединение таблицы с самим собой, строки I-UN слева и строка TOP 1 W-WS справа, Date справа> the Date левой стороны.

В качестве альтернативы самосоединению вы можете просто выбрать I-UN строки в предложении FROM..WHERE и получить W-WS Date с подзапросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...