根据另一个表选择列值

时间:2013-12-06 13:00:13

标签: sql sql-server-2008

我有两个表,其中一个表包含许多字段,包括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 <> ''

1 个答案:

答案 0 :(得分:1)

嗯,不确定源架构,但希望这至少可以让你走上正确的道路。

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 <> ''