#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
Я пытаюсь объединить эти два ЛЕВЫХ СОЕДИНЕНИЯ вместе.
Предварительный просмотр таблиц, с которыми я работаю:
Например /context:
Имя таблицы: [GMC утверждает, что 2019]
ПатНо | RevCode | CPT | Выставленные счета | DRG |
---|---|---|---|---|
5 | 141 | null | 500 | 439 |
5 | 636 | J1234 | 276000 | 101 |
Имя таблицы: BCBS_DRG_REIMBURS
Код DRG | Описание | Вес DRG | ALOS | Высокая обрезка | Дата вступления в силу | Скорость DRG | Суточные высокие выбросы обрезки |
---|---|---|---|---|---|---|---|
42 | XXXXX | YYYYY | 30 | 54 | 10/1/2018 | $235,121.59 | $5,486.17 |
101 | XXXXX | YYYYY | 24 | 40 | 10/1/2018 | $146,736.72 | $4,279.82 |
439 | XXXX | YYYYY | 13 | 23 | 10/1/2018 | $63,124.34 | $3,399.00 |
Имя таблицы: [BCBS DRG ВЫРЕЗАТЬ 07012016]
DRG | Обслуживание | PMT (SDA) |
---|---|---|
101 | DRG ВЫРЕЗАТЬ | 13537 |
439 | DRG ВЫРЕЗАТЬ | 13537 |
Желаемый результат:
DRG | Возмещение DRG | Вырезать PMT |
---|---|---|
439 | $63,124.34 | 13537 |
101 | $146,736.72 | 13537 |
Логика заключается в том, что, учитывая таблицу утверждений в качестве нашей основной таблицы, найдите совпадающие коды DRG (в данном случае 101 и 439) и верните соответствующие значения (таким образом, возмещение DRG из таблицы BCBS_DRG_REIMBURS и выделение PMT из таблицы [BCBS DRG ВЫРЕЗАТЬ 07012016].
Мой код / попытка:
SELECT
[GMC Claims 2019].DRG
FROM
[GMC Claims 2019]
LEFT JOIN
[BCBS DRG CARVE OUT 07012016] ON [GMC Claims 2019].DRG = [BCBS DRG CARVE OUT 07012016].DRG
WHERE
[GMC Claims 2019].DRG = [BCBS DRG CARVE OUT 07012016].DRG
LEFT JOIN
BCBS_DRG_REIMBURS ON [GMC Claims 2019].DRG = BCBS_DRG_REIMBURS.DRG_Code
WHERE
[GMC Claims 2019].DRG = BCBS_DRG_REIMBURS.DRG_Code
Комментарии:
1. Сегодня меня убивает Markdown … вопрос корректно отображает таблицы в предварительном просмотре, но не при публикации..
2. Я отправил вам электронное письмо! Спасибо!
Ответ №1:
Я думаю, что внутреннее соединение между тремя таблицами будет служить вашей цели:
select c.drg, b.Per_Diem_High_Trim_Outlier, d.pmt
from [GMC Claims 2019] c
inner join [BCBS_DRG_REIMBURS] b on c.drg = b.drg_code
inner join [BCBS DRG CARVE OUT 07012016] d on d.drg = b.drg_code
Комментарии:
1. Это действительно служит моим целям, спасибо!. Есть ли способ добиться того же результата без жесткого кодирования в 439 101? Набор данных содержит ~ 1 миллион строк, поэтому я стараюсь избегать жесткого кодирования, если это возможно.
2. Просто удалите условие. Тогда этот запрос вернет все строки, которые удовлетворяют условию объединения.
Ответ №2:
когда вы присоединяетесь, существует условие, при котором вы присоединяетесь, нет необходимости в предложении where , если только нет причины, однако в вашем случае вам нужно внутреннее соединение, а не внешнее соединение:
SELECT
*
FROM
[GMC Claims 2019]
JOIN BCBS_DRG_REIMBURS
ON [GMC Claims 2019].DRG = BCBS_DRG_REIMBURS.DRG_Code
JOIN [BCBS DRG CARVE OUT 07012016] -- < here maybe it should be left join ?
ON [GMC Claims 2019].DRG = [BCBS DRG CARVE OUT 07012016].DRG
Комментарии:
1. кстати, это худшее именование объекта
2. Я должен использовать псевдонимы правильно, чтобы сделать его чище? Кроме того, то, что вы мне дали, имеет смысл, но не возвращает DRG 101, который отображается во всех 3 таблицах. Он повторяет DRG 439 дважды. Кстати, спасибо за ваше время!
3. в любом случае, имя этих таблиц / представления остается таким же, в случае 101, возможно, у вас нет данных в таблице «[BCBS DRG ВЫРЕЗАТЬ 07012016]», в этом случае вам нужно использовать левое соединение