SQL-запрос, получить несколько значений из столбца с разными идентификаторами - PullRequest
1 голос
/ 29 сентября 2019

Я искал этот ответ, есть много "похожих" вопросов, но не совсем то же самое.Я хочу получить значение из столбца, но оно совпадает с разными идентификаторами.

Мне нужны оба значения в одной строке после выполнения запроса.

Пример таблицы:

+--field_id--+--ticket_id--+--value--+
+     16     +    423      +   PO123 +
+     16     +    344      +   PO101 +
+     7      +    423      +   17    +
+     7      +    344      +   24    +
+------------------------------------+

Основной переменной здесь является ticket_id, однако я хочу, чтобы значения field_id = 16 и field_id = 7 отображались в моем запросе в той же строке, поэтому в результате я хочу:

+--ticket--+--PO#--+--Est Hours--+
+   423    + PO123 +    17       +
+   344    + PO101 +    24       +
+--------------------------------+

В настоящее время у меня есть оператор выбора, который включает в себя «значение», но он только извлекает информацию из field_id = 16, я не могу получить значение из field_id = 7 в той же строке.

Пожалуйста, помогите.Я прошу прощения, если это дубликат, и я просто не заметил его или не понял другие ответы, которые я видел, где у людей были "похожие" проблемы, но они не казались точно такими же.* Примечание: я не могу изменить макет таблицы, из которой извлекаю данные, чтобы сделать эту работу лучше.

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Вам просто нужно одновременно присоединить таблицу к себе по условиям ticket_id И field_id

SELECT
    P.ticket_id AS ticket, P.value AS PONum, H.value AS EstHours
FROM
              Table P
    LEFT JOIN Table H ON P.ticket_id = H.ticket_id AND H.field_id = 7
WHERE
    P.field_id = 16
0 голосов
/ 29 сентября 2019

Использовать условную агрегацию:

select ticket_id,
       max(case when field_id = 16 then value end) as po,
       max(case when field_id = 7 then value end) as est_hours
from t
group by ticket_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...