none
多表连接后不同的表内容不能相加的问题 RRS feed

  • 问题

  •     有两个表:contractTable和PropertyTable,连接后我想把ContractTable中的ContractRemarks和PropertyTable中的PropertyRemarks合并起来,可是合并不了。两个字段都是nvarchar(255),我测试了只能同一个表的内容相加,不同的表就不行!

        请问该怎么解决呢?

    ===============如图==============


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月23日 4:34

答案

  • 應該在所有運算都處理完之後才通過AS來指定資料行的名稱,試試看這樣行不行。

    select a.ManageProject  as 经营项目,ISNULL (a.ContractRemarks,'')+'  '+ISNULL (b.PropertyRemarks,'') as 兩個備註合併在一起
    from ContractTable a join PropertyTable b on (a.City+a.Road +a.[Address])=(b.City +b.Road +b.[Address] )
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月25日 10:23

全部回复

  • 從你的畫面看來PropertyRemarks和ContractRemarks資料行都有NULL值,試試看在相加前先用ISNULL做轉換,例如ISNULL(PropertyRemarks,'')和ISNULL(ContractRemarks,'')。


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月23日 4:59
  • 谢谢回答!

    能否帮忙完整的写出来呢,我还比较模糊?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月23日 5:22
  • CREATE TABLE atest(NAME NVARCHAR(20))

    CREATE TABLE btest(NAME NVARCHAR(20))


    INSERT INTO atest(name) SELECT N'真正的'
    INSERT INTO btest(name) SELECT N'真正的'

    SELECT ISNULL(atest.NAME,0)+ISNULL(btest.NAME,0) AS totalname FROM atest,btest 

     


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年9月23日 5:34
  • 谢谢回答!

    能否帮忙完整的写出来呢,我还比较模糊?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    試試看這樣行不行。

    select IsNull(a.ContractRemarks,'') + IsNull(b.PropertyRemarks,'') as 兩個備註合併在一起
    from ContractTable a
    join PropertyTable b
    on a.City + a.Road = b.City + b.Road
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月23日 5:37
  • 抱歉这么久才回帖!

         单独的使用您提供的代码确实可以解决问题,但问题是如果加入了其他的字段,AS就失效了

     

    select a.ManageProject  as 经营项目,(select ISNULL (a.ContractRemarks,'')+'  '+ISNULL (b.PropertyRemarks,'')as 兩個備註合併在一起)
    from ContractTable a join PropertyTable b on (a.City+a.Road +a.[Address])=(b.City +b.Road +b.[Address] )
    

    -
    -    这样写就不会显示列名‘兩個備註合併在一起’,而是显示'无列名',请问该怎么改呢???
    


     


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月25日 10:07
  • 應該在所有運算都處理完之後才通過AS來指定資料行的名稱,試試看這樣行不行。

    select a.ManageProject  as 经营项目,ISNULL (a.ContractRemarks,'')+'  '+ISNULL (b.PropertyRemarks,'') as 兩個備註合併在一起
    from ContractTable a join PropertyTable b on (a.City+a.Road +a.[Address])=(b.City +b.Road +b.[Address] )
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月25日 10:23
  • 谢谢解答!

    select ISNULL (a.ContractRemarks,'')+'  '+ISNULL (b.PropertyRemarks,'')as 兩個備註合併在一起
    
    我多写了一个Select!
    
    感谢!
    



    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月25日 10:42