2013-10-09 3 views
0
SELECT a.CHALLAN_ID, 
     a.CHALLAN_NO, 
     a.CHALLAN_DATE, 
     b.SUPPLIER_NAME, 
     CASE 
     WHEN EXISTS (SELECT t1.CHALLAN_ID 
         FROM TCHALLAN_MTR t1, 
          TPURINVDETAIL t2 
         WHERE t1.CHALLAN_ID = t2.CHALLAN_ID) THEN 'Yes' 
     ELSE 'No' 
     END AS Billed 
FROM TCHALLAN_MTR AS a 
     INNER JOIN MSUPPLIER AS b 
       ON a.PARTY_ID = b.SUPPLIER_ID 

Я ожидаю, что из положить как Y,Y,N,N,N, но он дает выход как этот Y,Y,Y,Y,Y
В поисках срочного решения на то же самое.СЛУЧАЙ, КОГДА СУЩЕСТВУЕТ

+2

Можете ли вы добавить пример данных? – Gidil

+0

Мне кажется, что вы просто проверяете, имеют ли записи в 'TCHALLAN_MTR' соответствующую запись в' TPURINVDETAIL', возможно, вы должны каким-то образом сопоставить подзапрос ... –

ответ

1

Простой ответ, внутренний запрос всегда возвращает те же результаты, поскольку он не имеет логического подключения к внешнему запросу.
Он всегда будет возвращать все Yes или все No

4

Мне кажется, что вы просто проверить ли какая-либо запись в TCHALLAN_MTR имеет соответствующую запись в TPURINVDETAIL, возможно, вы означали соотносить подзапрос в некотором роде как

SELECT a.CHALLAN_ID, 
     a.CHALLAN_NO, 
     a.CHALLAN_DATE, 
     b.SUPPLIER_NAME, 
     CASE 
     WHEN EXISTS (SELECT 1 
         FROM TPURINVDETAIL t2 
         WHERE a.CHALLAN_ID = t2.CHALLAN_ID) THEN 'Yes' 
     ELSE 'No' 
     END AS Billed 
FROM TCHALLAN_MTR AS a 
     INNER JOIN MSUPPLIER AS b 
       ON a.PARTY_ID = b.SUPPLIER_ID 
Смежные вопросы