bugfix> sql > 投稿

私のクエリ

SELECT
    stoMast.sStockistCode,
    stoMast.sStateName,
    stoMast.sDivision,
    stateMap.sRMCode
FROM
    tblRSM_State_Mapping stateMap
INNER JOIN
    tblStockistMaster stoMast ON
    stateMap.sStateName = stoMast.sStateName
WHERE 
    stateMap.sRMCode = 'MCNE04001' 
    and 
    stoMast.sDivision = 'CIDIS'
except
select 
    sStockistCode,
    sStateName,
    sDivision,
    sRMCode
From
    tblEntry

再びクエリ結果の列を比較したい

  • sStockistCode
  • sStateName
  • sDivision

tblStockistMaster と同じフィールドで

  • sStockistCode
  • sStateName
  • sDivision そして、ストック名を取得します。

上記のクエリ結果とテーブルを比較する方法がわかりません。

回答 2 件
  • たぶん、CTE式で使用される次のSQLコードを使用できます

    ;with cte as (
        SELECT
            stoMast.sStockistCode,
            stoMast.sStateName,
            stoMast.sDivision,
            stateMap.sRMCode
        FROM
            tblRSM_State_Mapping stateMap
        INNER JOIN
            tblStockistMaster stoMast ON
            stateMap.sStateName = stoMast.sStateName
        WHERE 
            stateMap.sRMCode = 'MCNE04001' 
            and 
            stoMast.sDivision = 'CIDIS'
        except
        select 
            sStockistCode,
            sStateName,
            sDivision,
            sRMCode
        From
            tblEntry
    )
    select
    cte.*,
    sm.sStockistName
    from cte
    left join tblStockistMaster as sm
        on sm.sStockistCode  = cte.sStockistCode  and
           sm.sStateName  = cte.sStateName and
           sm.sDivision = cte.sDivision
    
    

  • -- I retrieve the stockist Name
    SELECT
        stoMast.sStockistName,
    FROM
        tblRSM_State_Mapping stateMap
    INNER JOIN
        tblStockistMaster stoMast
            ON stateMap.sStateName = stoMast.sStateName
    -- I'm joining table entry If I can match
    LEFT JOIN
        tblEntry tbl
            on tbl.sStockistCode = stoMast.sStockistName
            AND tbl.sStateName = stoMast.sStateName
            AND tbl.sDivision = stoMast.sDivision
            AND tbl.sRMCode = stateMap.sRMCode
    WHERE 
        stateMap.sRMCode = 'MCNE04001' 
        and stoMast.sDivision = 'CIDIS'
    -- And The the exept thing, I don't want that got a match with  the tableentry
        AND COALESCE(tbl.sStockistCode, tbl.sStateName, tbl.sDivision, tbl.sRMCode) is null
    
    

    私はそれがあなたが欲しかったものだと期待しています。別の方法で、あなたがどこから来たのか(テーブルとどんなデータが含まれるかについての考え)とあなたが望む結果を理解するのを手伝ってください。クエリの作成が簡単になります。

あなたの答え