SQL; Как я могу использовать Где Условие только для одного столбца - PullRequest
0 голосов
/ 23 августа 2011

Прежде всего

Select Count(*)
From PROSPECT_MASTER //Result:12730 row


Select Count(*)
From YAZ..MARDATA.S_MUSTERI // Result: 1112 row

И это мой запрос;

SELECT a.ID, a.TURQ_ID, a.UNVAN, a.TIP, a.AKTOR, 
       a.GSM_ALAN, a.GSM_TEL, a.IS_ALAN, a.IS_TEL, 
       a.IS_EXT, a.EV_ALAN, a.EV_TEL, a.ADRES, 
       a.STF_KONTAK, 
       (CASE WHEN A.YAZ_ADRES IS NULL
         THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) 
         ELSE A.YAZ_ADRES END) 
       COLLATE DATABASE_DEFAULT AS YAZ_ADRES , A.SEHIR, A.PS, A.MEMO
FROM PROSPECT_MASTER A, YAZ..MARDATA.S_MUSTERI B
WHERE A.ID IN (B.TC_KIM_NO, B.VERGI_NO) // Result 1070 row

Как обычно, условие A.ID IN (B.TC_KIM_NO, B.VERGI_NO) работает с моим полным запросом, но я хочу, чтобы это условие работало только с одним столбцом (YAZ_ADRES), потому что A.ID не имеет всех B .TC_KIM_NO или все B.VERGI_NO

Мой запрос должен получить 12730 строк, например, количество PROSPECT_MASTER таблицы. Но я хочу выполнить условие A.ID IN (B.TC_KIM_NO, B.VERGI_NO) только для столбца YAZ_ADRES.

Как я могу это сделать?

1 Ответ

2 голосов
/ 23 августа 2011

Мне кажется, что вам нужно внешнее соединение?

SELECT a.ID, a.TURQ_ID, a.UNVAN, a.TIP, a.AKTOR, 
       a.GSM_ALAN, a.GSM_TEL, a.IS_ALAN, a.IS_TEL, 
       a.IS_EXT, a.EV_ALAN, a.EV_TEL, a.ADRES, 
       a.STF_KONTAK, 
       (CASE WHEN A.YAZ_ADRES IS NULL
         THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) 
         ELSE A.YAZ_ADRES END) 
       COLLATE DATABASE_DEFAULT AS YAZ_ADRES , A.SEHIR, A.PS, A.MEMO
FROM PROSPECT_MASTER A
LEFT OUTER JOIN YAZ..MARDATA.S_MUSTERI B
ON A.ID IN (B.TC_KIM_NO, B.VERGI_NO) // Result 12730 rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...