2013-12-06 8 views
0

У меня есть две таблицы, одна из которых содержит много полей, включая fldANA и fldPROD, и другую таблицу, содержащую те же два поля. Однако не все поля fldANA и fldPROD имеют сопоставимое значение в таблице 2, и поэтому я не знаю, как будто я могу действительно присоединиться к полям? Ниже приведено то, что мой запрос выглядит, но он возвращает 10 или 1000 записей больше, чем он должен.Выбор значения столбца на основе другой таблицы

SELECT Line#, CastID, 
     (CASE WHEN #sRst1.PROD = FN_qryIDs.fldANA AND #sRst1.PROD = 
                FN_qryIDs.fldPROD 
     THEN FN_qryIDs.fldANA ELSE #sRst1.ANA END) AS ANA, 
     (CASE WHEN #sRst1.PROD = FN_qryIDs.fldANA AND #sRst1.PROD = 
                FN_qryIDs.fldPROD 
     THEN FN_qryIDs.fldCONN ELSE #sRst1.CONN END) AS CONN 
INTO #sRst2 
FROM #sRst1 
WHERE CastID <> '' AND PROD <> '' AND ANA <> '' 
+0

Вы пытались «оставить соединение» обеими таблицами. 'select * from fn_qryIDs t1 left join # sRst1 t2 на t1.fldANA = t2.ANA и t1.fldPROD = t2.PROD' –

ответ

1

Ehm, не уверен в исходной схеме, но, надеюсь, это должно по крайней мере получить вас на правильном пути.

SELECT R1.[Line#], R1.CastID 
    ,ISNULL(Q.fldANA, R1.ANA) [ANA] 
    ,ISNULL(Q.fldCONN, R1.CONN) [Conn] 
FROM #sRst1 R1 
LEFT JOIN FN_qryIDs Q ON Q.fldANA = R1.PROD 
    AND Q.fldPROD = R1.PROD 
WHERE R1.CastID <> '' 
    AND R1.Prod <> '' 
    AND R1.ANA <> '' 
Смежные вопросы