当前位置: 代码迷 >> Sql Server >> 尝试将不可为 NULL 的列的值设置为 NULL。该怎么处理
  详细解决方案

尝试将不可为 NULL 的列的值设置为 NULL。该怎么处理

热度:100   发布时间:2016-04-24 08:54:20.0
尝试将不可为 NULL 的列的值设置为 NULL。
公司服务器从Server2008升级成2012 
数据库一直都是SQL2008 

自从系统升级之后SQL查询总是报错:尝试将不可为 NULL 的列的值设置为 NULL。

连接到08的系统上查询语句没有问题,连线改成12就报错,是不是server2012在什么地方需要设置什么?

------解决思路----------------------
(A1.ORDER_QTY) 
两边括号去掉试试。
------解决思路----------------------
-- 试试别这样写,改为 case when A5.DelayMonth is null then ...else ... end
-- 下面条件里的也改下试试

SELECT A1.CORDER_NO,A1.SEQN,A1.ITEM,A2.ITEM_DESC1, A3.ValvesTypeName,
  CASE WHEN ISNULL(A5.DelayMonth,'')= '' THEN DATEADD(DAY,-7,A1.PROMISE_DLVRY) ELSE A5.DelayMonth END AS Plandate,
  (A1.ORDER_QTY) , ISNULL(A4.QTY,0) AS  QTY,A1.PORDER_P_K
 --INTO #CORDER_DTL_temp
 FROM CORDER_DTL  A1 WITH(NOLOCK)
 LEFT JOIN MATERIAL_MST A2 WITH(NOLOCK) ON A1.ITEM=A2.ITEM
 INNER JOIN MaterialClass A3 WITH(NOLOCK) ON A3.Item = A1.ITEM
 LEFT JOIN MORDER_PlanDate A5 WITH(NOLOCK) ON A5.P_K = A1.P_K
 LEFT JOIN corder_mst A6 ON A1.CORDER_NO = A6.CORDER_NO
 LEFT JOIN PORDER_DTL A7 ON A1.PORDER_P_K = A7.P_K
 LEFT JOIN CORDER_DTL A8 ON ISNULL(A7.LRP_NO,'qq') = ISNULL(A8.LRP_NO,'XX')
 LEFT JOIN CORDER_MST A9 ON ISNULL(A8.CORDER_NO = A9.CORDER_NO
 LEFT JOIN #InStockBefore A4 ON RTRIM(ISNULL(A1.CORDER_NO,'CA'))+ '-' + LTRIM(ISNULL(A1.SEQN,'CB')) like ISNULL(A4.LRP_NO,'XXXXX')
 WHERE A1.C_LINE_STAT IN ('2','3','4','5') AND A2.ITEM_CLAS1 = '1'
 AND NOT (A9.CUST_ID = 'V00001' AND ISNULL(A5.DelayMonth,'')='')
 AND CONVERT(CHAR(6),CASE WHEN ISNULL(A5.DelayMonth,'')= '' THEN DATEADD(DAY,-7,A1.PROMISE_DLVRY) ELSE A5.DelayMonth END,112) = @Month
 AND A6.SALES = '001'  AND A2.MB = 'M' 
------解决思路----------------------
你贴出来的脚本也不完整,下面这段是有问题
LEFT JOIN CORDER_MST A9 ON ISNULL(A8.CORDER_NO = A9.CORDER_NO
  相关解决方案