Сравнение результата запроса с таблицей и получение определенного поля - PullRequest
0 голосов
/ 25 мая 2018

Мой запрос

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

enter image description here

Снова я хотел бы сравнить столбцы результата запроса

  • sStockistCode
  • sStateName
  • sDivision

с tblStockistMaster с теми же полями

  • sStockistCode
  • sStateName
  • sDivision и получите STOCKIST NAME.

Не знаете, как сравнить приведенный выше результат запроса с таблицей.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018
-- 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

Я ожидаю, что это то, что вы хотели получить.В другом случае, пожалуйста, помогите нам понять, откуда вы пришли (таблицы и представление о том, какие данные могут быть) и какой результат вы хотите получить.Будет проще создать запрос.

0 голосов
/ 25 мая 2018

Может быть, вы можете использовать следующий код SQL, используемый с CTE выражение

;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 
...