SQL and Coldfusion left join tables getting duplicate results as a list in one column

后端 未结 4 1195
醉酒成梦
醉酒成梦 2021-01-25 20:56

lets say I have two tables: Persons (P_Id, Name) and Orders (O_Id, OrderNo, P_Id)... I want to do a left join which would be:

SELECT Persons.Name, Orders.OrderNo         


        
4条回答
  •  情话喂你
    2021-01-25 21:15

    Look up FOR XML - that will let you pivot the order numbers.

    Check this out

    With Person AS
    (
        Select 1 PersonId, 'John' PersonName
        Union Select 2, 'Jane'
    ),
    Orders As
    (
        Select 1 OrderId, 1 PersonId, Convert (DateTime, '1/1/2011') OrderDate
        Union Select 2, 1 , Convert (DateTime, '1/2/2011')
        Union Select 3, 1 , Convert (DateTime, '1/5/2011')
        Union Select 4, 1 , Convert (DateTime, '1/7/2011')
        Union Select 5, 1 , Convert (DateTime, '1/9/2011')
        Union Select 6, 2 , Convert (DateTime, '1/2/2011')
        Union Select 7, 2 , Convert (DateTime, '1/5/2011')
        Union Select 8, 2 , Convert (DateTime, '1/7/2011')
    )
    Select PersonId, 
    (
        Select STUFF((SELECT  ', ' + cast(O.OrderId as nvarchar)
        FROM Orders O
        Where 1=1
            And O.PersonId = Person.PersonId
        FOR XML PATH('')), 1, 1, '') 
    ) OrderList
    From Person
    

    The output is

    PersonId    OrderList
    ----------- -----------------------
    1            1, 2, 3, 4, 5
    2            6, 7, 8
    
    (2 row(s) affected)
    

提交回复
热议问题