Sql 基于另一个表选择列值

Sql 基于另一个表选择列值,sql,sql-server-2008,Sql,Sql Server 2008,我有两个表,其中一个包含许多字段,包括fldANA和fldPROD,另一个表包含相同的两个字段。并非所有fldANA和fldPROD字段在表2中都有匹配值,因此我不知道是否真的可以加入这些字段?下面是我的查询当前的样子,但它返回的记录比预期的多10或1000条 SELECT Line#, CastID, (CASE WHEN #sRst1.PROD = FN_qryIDs.fldANA AND #sRst1.PROD =

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

嗯,不确定源模式,但希望这至少能让您走上正确的道路

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 <> ''
您是否尝试左键联接两个表。从fn_qryIDs t1左键选择*在t1.fldANA=t2.ANA和t1.fldPROD=t2.PROD上连接sRst1 t2