Состояние соединяется со многими отношениями - PullRequest
0 голосов
/ 09 апреля 2019

Я работаю с данными претензий и переоцениваю претензии в соответствии с другим графиком оплаты.Итак, у меня есть две таблицы.Претензии и график.В этом случае переоценка сводится к CPT_Code и Modifier.Поэтому я условно присоединяюсь к ним на

claims.CPT = fschedule.CPT 
AND 
claims.mod = fschedule.mod

Вот как выглядит fschedule:

CPT || Modifier || Price

77325   ||   26 || 73.25

77325   ||   TC || 52.77

77325   ||   XX || 101.21 

77333   ||   XX || 12.31

Однако моя проблема в том, что таблица утверждений может иметь:

CPT   || Modifier
77333 || TC

Но в расписании может быть 77333, но не с TC или 26 только XX.Поэтому я хочу, чтобы таблицы объединялись на обоих

claims.CPT = fschedule.CPT 
AND 
claims.mod = f.schedule.mod

, но если в fschedule нет совпадений, я хочу, чтобы это совпадало, когда модификатор fschedule XX

Я пытаюсь условно присоединиться кдве таблицы с использованием операторов case.

FROM
claims as c
LEFT JOIN
fschedule as f
ON
CASE WHEN c.mod IN ('TC','26') THEN
                                   CASE WHEN f.mod IN ('TC','26') AND c.cpt= f.cpt AND c.mod = f.mod THEN c.cpt = f.cpt AND c.mod = f.mod
                                        WHEN f.mod NOT IN ('TC','26') AND c.cpt= f.cpt AND c.mod <> f.mod THEN c.cpt = f.cpt AND c.mod <> f.mod
                                         END

WHEN c.mod NOT IN ('TC','26') AND f.mod NOT IN ('TC','26') THEN c.cpt = f.cpt AND c.mod = f.mod 
END;

Мне нужно использовать условное левое соединение, например:

Claims as c
LEFT JOIN
fschedule as f
ON
c.CPT = f.CPT
AND
c.mod = f.mod

Однако, если в таблице утверждений есть:

CPT   || Modifier || Paid
77333 || TC       || 7.88

Но в fschedule есть только:

CPT   || Modifier || Price
77333 || XX       || 12.31

Мне нужна таблица заявок, чтобы вывести цену 12,31, найденную в таблице fschedule.Модификатор XX означает, что модификатор не существует.

Таблица заявок перед ее присоединением к таблице fschedule содержит 22 124 строки данных.После объединения их с моим текущим кодом таблица выводит 25 283 строки данных.Мне нужен выход, чтобы остаться 22,124.

Короче говоря, мне нужно объединить две таблицы на обеих:

c.cpt = f.cpt
AND
c.mod = f.mod

, но если таблица утверждений имеет код и модификатор CPT, но fschedule имеет только код CPT инет совпадения модификатора, тогда мне нужно заставить fschedule вывести цену с модификатором XX, так как он не имеет модификатора TC или 26.

Спасибо за помощь.

************* Обновленный выпуск **************

Таблица претензий:

CPT   || Mod || Paid

77067 || TC  || 83.10

Таблица сборов

CPT   || Mod || Price
77067 || 26  || 76.23
77067 || XX  || 103.01

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

CPT   || Mod  || Paid  || Fees_Price || Fees_Mod
77067 || TC   || 83.10 || 103.01     || XX

На данный момент это вывод:

CPT   || Mod  || Paid  || Fees_Price || Fees_Mod
77067 || TC   || 83.10 ||            || 

Спасибо

1 Ответ

0 голосов
/ 09 апреля 2019

Гораздо проще выполнить условие ВКЛ:

ON (c.CPT = f.CPT AND c.mod = f.mod) OR (c.CPT = f.CPT AND f.mod ='xx' AND f.CPT NOT IN (SELECT CPT FROM Fees WHERE mod<>'xx'))

...