SQL 服务器计算列给出了不正确的结果
SQL server Computed column giving in-correct result
在 MP_SALESID 中遵循 SQL 语句 returns NULL。但是,如果我将 where KRFPRODUCTIONORDERGROUPiD = 'T1.KRFPRODUCTIONORDERGROUPID' 替换为 T1.KRFPRODUCTIONORDERGROUPID 的实际值,那么我将在 MP_SalesId 中得到一个值。我在这里错过了什么?在过去的 12 个小时里,我一直在与它作斗争:(
SELECT T1.KRFPRODUCTIONORDERGROUPID AS KRFPRODUCTIONORDERGROUPID,
(CAST ((select top(1) salesId from salesLine
join INVENTTRANSORIGIN as SalesLineInventTransOrigin on
SalesLineInventTransOrigin.INVENTTRANSID = salesLine.INVENTTRANSID
join InventTrans as ProdTableInventTrans on
ProdTableInventTrans.MARKINGREFINVENTTRANSORIGIN =
SalesLineInventTransOrigin.RECID
join INVENTTRANSORIGIN as ProdTableInventTransOrigin on
ProdTableInventTransOrigin.recid =
ProdTableInventTrans.INVENTTRANSORIGIN
join ProdTable on ProdTableInventTransOrigin.INVENTTRANSID =
PRODTABLE.INVENTTRANSID
where KRFPRODUCTIONORDERGROUPiD = 'T1.KRFPRODUCTIONORDERGROUPID')
AS NVARCHAR(20))) AS MP_SALESID
FROM PRODTABLE T1
不要在 T1.KRFPRODUCTIONORDERGROUPID
周围使用单引号 (')
SELECT T1.KRFPRODUCTIONORDERGROUPID AS KRFPRODUCTIONORDERGROUPID,
(CAST ((select top(1) salesId from salesLine
join INVENTTRANSORIGIN as SalesLineInventTransOrigin on
SalesLineInventTransOrigin.INVENTTRANSID = salesLine.INVENTTRANSID
join InventTrans as ProdTableInventTrans on
ProdTableInventTrans.MARKINGREFINVENTTRANSORIGIN =
SalesLineInventTransOrigin.RECID
join INVENTTRANSORIGIN as ProdTableInventTransOrigin on
ProdTableInventTransOrigin.recid =
ProdTableInventTrans.INVENTTRANSORIGIN
join ProdTable on ProdTableInventTransOrigin.INVENTTRANSID =
PRODTABLE.INVENTTRANSID
where KRFPRODUCTIONORDERGROUPiD = T1.KRFPRODUCTIONORDERGROUPID)
AS NVARCHAR(20))) AS MP_SALESID
FROM PRODTABLE T1
在 MP_SALESID 中遵循 SQL 语句 returns NULL。但是,如果我将 where KRFPRODUCTIONORDERGROUPiD = 'T1.KRFPRODUCTIONORDERGROUPID' 替换为 T1.KRFPRODUCTIONORDERGROUPID 的实际值,那么我将在 MP_SalesId 中得到一个值。我在这里错过了什么?在过去的 12 个小时里,我一直在与它作斗争:(
SELECT T1.KRFPRODUCTIONORDERGROUPID AS KRFPRODUCTIONORDERGROUPID,
(CAST ((select top(1) salesId from salesLine
join INVENTTRANSORIGIN as SalesLineInventTransOrigin on
SalesLineInventTransOrigin.INVENTTRANSID = salesLine.INVENTTRANSID
join InventTrans as ProdTableInventTrans on
ProdTableInventTrans.MARKINGREFINVENTTRANSORIGIN =
SalesLineInventTransOrigin.RECID
join INVENTTRANSORIGIN as ProdTableInventTransOrigin on
ProdTableInventTransOrigin.recid =
ProdTableInventTrans.INVENTTRANSORIGIN
join ProdTable on ProdTableInventTransOrigin.INVENTTRANSID =
PRODTABLE.INVENTTRANSID
where KRFPRODUCTIONORDERGROUPiD = 'T1.KRFPRODUCTIONORDERGROUPID')
AS NVARCHAR(20))) AS MP_SALESID
FROM PRODTABLE T1
不要在 T1.KRFPRODUCTIONORDERGROUPID
SELECT T1.KRFPRODUCTIONORDERGROUPID AS KRFPRODUCTIONORDERGROUPID,
(CAST ((select top(1) salesId from salesLine
join INVENTTRANSORIGIN as SalesLineInventTransOrigin on
SalesLineInventTransOrigin.INVENTTRANSID = salesLine.INVENTTRANSID
join InventTrans as ProdTableInventTrans on
ProdTableInventTrans.MARKINGREFINVENTTRANSORIGIN =
SalesLineInventTransOrigin.RECID
join INVENTTRANSORIGIN as ProdTableInventTransOrigin on
ProdTableInventTransOrigin.recid =
ProdTableInventTrans.INVENTTRANSORIGIN
join ProdTable on ProdTableInventTransOrigin.INVENTTRANSID =
PRODTABLE.INVENTTRANSID
where KRFPRODUCTIONORDERGROUPiD = T1.KRFPRODUCTIONORDERGROUPID)
AS NVARCHAR(20))) AS MP_SALESID
FROM PRODTABLE T1