TurnNo IsNight     
------ ----------- 
T001   0
T002   0
T003   0
T004   0
T005   0

解决方案 »

  1.   

    在不同的電腦上運行,有兩种不同的結果(環境都是:Sql Server 2000)
    有的結果是(我認為是正常的):
    TurnNo IsNight
    --------------
    T001 0
    T002 0
    T003 0
    T004 0
    T005 0
    而有些電腦上的運行結果是:
    TurnNo IsNight
    --------------
    T001 1
    T002 1
    T003 1
    T004 1
    T005 1
    而且, 如果將 "1 IsNight"改為 "2 IsNight"的話, 上面的結果相應地變為
    TurnNo IsNight
    --------------
    T001 2
    T002 2
    T003 2
    T004 2
    T005 2
    如果將ISNULL(T3.IsNight,0)IsNight 改為 T3.IsNight的話, 而結果都是正確的,即:
    TurnNo IsNight
    --------------
    T001 NULL
    T002 NULL
    T003 NULL
    T004 NULL
    T005 NULL
    以上問題百思不得其解, 請高手們指點一二
      

  2.   

    楼主,你的问题是什么呢??  isnull() 不奇怪啊!!
      

  3.   

    楼主,你说的1,4数据集我都 可以看到.如果这样改,就可以看到你的2,3数据集
    SELECT T1.TurnNo,T3.IsNight as  IsNight 
    FROM @TEST T1 LEFT JOIN
    (SELECT TurnNo,3 IsNight FROM @TEST WHERE BCXZ=1) T3
    ON (T1.TurnNO=T3.TurnNo)
    --注意BCXZ=1
      

  4.   

    TurnNo IsNight     
    ------ ----------- 
    T001   3
    T002   3
    T003   3
    T004   3
    T005   3
      

  5.   

    回:  aw511(点点星灯) 
    我是沒有改變BCXZ為1的情況下, 在有的電腦上結果還是
    TurnNo IsNight
    --------------
    T001 1
    T002 1
    T003 1
    T004 1
    T005 1
    然而這是不正確的, 但錯誤原因就不得而知了
      

  6.   

    TurnNo IsNight
    --------------
    T001 1
    T002 1
    T003 1
    T004 1
    T005 1^_^
      

  7.   

    TO: huangjianyou(小健)
    結果應該是
    TurnNo IsNight
    --------------
    T001 0
    T002 0
    T003 0
    T004 0
    T005 0才對啊
      

  8.   

    咋滴我这里没有,按照楼主写的代码,不管改 1 IsNight 还是2 IsNight ,由于SELECT TurnNo,3 IsNight FROM @TEST WHERE BCXZ=1肯定为null,ISNULL(T3.IsNight,0)IsNight 肯定会都是0,因为1 IsNight是数字,而ISNULL(T3.IsNight,0)也是替代为数字,不会有什么问题!
      

  9.   

    現在的問題就在于:有會電腦能正確全部返回0,而有的電腦不會.
    不能正確返回的電腦也絕非偶然,因為我已遇到不止一台電腦有這個錯誤TO:huangjianyou(小健)
    你電腦上返回的結果就是錯誤的,不信你分析分析SQL語句
      

  10.   

    有什么问题吗?
    (SELECT TurnNo,1 IsNight FROM TEST WHERE BCXZ=0) T3 本身就是一个空集!
    无论1 IsNight 还是2 IsNight 都一样的是空集!一个集合 LEFT JOIN 一个空集! 第一个和第四个结果是正确的!那么楼主的第二三种结果在什么情况下得出的,SQL版本?补丁版本?
      

  11.   

    對啊, 我也認為第一個和第四個結果是正常的, 但偏偏有的電腦上運行會得出第二和第三种結果.
    得出正確結果的電腦配置是:Windows 2000 SP4 (或Windows 2003)& SQL Server 2000 未打補丁,
    得出錯誤結果的電腦配置也是相同的