回答 下列问题,请先看下面的网址起:
http://community.csdn.net/Expert/topic/5692/5692333.xml?temp=.4661524俺要的是标准答案,答不出标准的答案的也请顶一下。答的出的不想答的也请顶,请不要发提醒的。或网址什么的。谢谢合作。(进来的朋友。请顶一下哦。)如果是下面的数据
"Persons" 表:
编号      LastName      FirstName        Address          City 
001       Hansen        Ola              Timoteivn 10     Sandnes 
002       Svendson      Tove             Borgvn 23        Sandnes 
003       Pettersen     Kari             Storgt 20        Stavanger "Orders"表:
编号      Company      OrderNumber 
001       Sega         2312 
001       W3School     2312 
001       Trio         4678 
002       W3School     6798
查询的结果是:
编号   Company                 OrderNumber 
001    Sega,W3School,Trio    2312,4678
002    W3School                6798
003不同的地方是,,当合并的数据相同时候,,只出现一次。
如:
001       Sega         2312 
001       W3School     2312 2312  出现了二次但是查找的结果。
001    Sega,W3School,Trio    2312,4678的2312 出现一次。。看那位路过的朋友,能解答。(加大了难度哦。)

解决方案 »

  1.   

    請juntor() ,paoluo  二為大俠 來接分。
      

  2.   

    :)--創建測試環境
    Create Table Persons
    (编号 Char(3),
     LastName Varchar(20),
     FirstName Varchar(20),
     Address Varchar(20),
     City Varchar(20))
    Insert Persons Select '001',       'Hansen',         'Ola',               'Timoteivn 10',     'Sandnes' 
    Union All Select '002',       'Svendson',      'Tove',            'Borgvn 23',         'Sandnes' 
    Union All Select '003',       'Pettersen',       'Kari',             'Storgt 20',            'Stavanger'Create Table Orders
    (编号 Char(3),
     Company Varchar(20),
     OrderNumber Int)
    Insert Orders Select '001',       'Sega',             2312 
    Union All Select '001',       'W3School',     2312 
    Union All Select '001',       'Trio',              4678 
    Union All Select '002',       'W3School',     6798 
    GO
    --測試
    --问题一
    select * from Persons  where LastName='Hansen' 
    union all
    select * from Persons  where LastName='Hansen' 
    union all
    select * from Persons  where LastName='Hansen' 
    union all
    select * from Persons  where LastName='Hansen'
    GO--問題二
    --創建函數
    Create Function F_Get_Orders(@编号 Char(3), @Flag Bit)
    Returns Varchar(8000)
    As
    Begin
    Declare @S Varchar(8000)
    Select @S = ''
    If(@Flag = 0)
    Select @S = @S + ',' + Company From Orders Where 编号 = @编号 Order By OrderNumber
    Else
    Select @S = @S + ',' + Cast(OrderNumber As Varchar(100)) From Orders Where 编号 = @编号 Group By OrderNumber
    Select @S = Stuff(@S, 1, 1, '')
    Return @S
    End
    GO
    --調用
    Select 编号, dbo.F_Get_Orders(编号, 0) As Company, dbo.F_Get_Orders(编号, 1) As OrderNumber From Persons
    GO
    --刪除測試環境
    Drop Table Persons, Orders
    Drop Function F_Get_Orders
    GO
    --結果
    /*
    --问题一結果
    编号LastNameFirstNameAddressCity
    001HansenOlaTimoteivn 10Sandnes
    001HansenOlaTimoteivn 10Sandnes
    001HansenOlaTimoteivn 10Sandnes
    001HansenOlaTimoteivn 10Sandnes--问题二結果
    编号CompanyOrderNumber
    001Sega,W3School,Trio2312,4678
    002W3School6798
    003NULLNULL
    */