Comma separated values in one column - SQL SERVER

前端 未结 4 1768
春和景丽
春和景丽 2020-12-06 11:12
Customer Table
--------------
ID   Name
1   James
2   Peter
Order Table
---------------
OrderId  CustId
100     1
101     1
102     2

How can I w

相关标签:
4条回答
  • 2020-12-06 11:33

    A very simple and handy solution given on the link below.

    http://tejasnshah.wordpress.com/2009/02/28/sql-server-get-column-values-as-comma-seperated-list-using-xml-path-instead-of-udfs-using-sql-coalesce/

    The SQL query written on that link is in an image ...so i couldn't copy it here.

    0 讨论(0)
  • 2020-12-06 11:40

    Adding full details from Sheikh Haris' link.

    Given this table:

    enter image description here

    To get output like:

    enter image description here

    Use the following SQL:

    SELECT field1,
        Substring(convert(varchar(100),
        (
        SELECT (', ' + field2)
            FROM #test t2
            WHERE t1.field1 = t2.field1
            ORDER BY field1, field2
        FOR XML PATH( '' )
                        )), 3, 1000 )
    FROM #test t1
    GROUP BY field1
    

    I added a convert function to the substring so that the WIDEMEMO field would be displayed (SQL Server)

    0 讨论(0)
  • 2020-12-06 11:44

    Create a User Defined Function as shown below

    CREATE FUNCTION [dbo].[CommaSeperatedOrderIDs](@CustId INT) returns varchar(Max)
    AS  
    BEGIN   
    
    DECLARE @CommaSeperatedValues VARCHAR(MAX)
    SELECT @CommaSeperatedValues = COALESCE(@CommaSeperatedValues+',' , '') + OrderID
    FROM OrderTable WHERE CustId = @CustId
    RETURN @CommaSeperatedValues
    
    END
    

    And then,

    select ID, [Name], ([dbo].[CommaSeperatedOrderIDs](ID)) AS ListofOrders
    From CustomerTable
    
    0 讨论(0)
  • 2020-12-06 11:47

    Please try:

    select ID, [Name],
    (select OrderID+',' from OrderTable where CustID=ID
    group by OrderID for xml path('')) AS ListOfOrders
    From CustomerTable
    
    0 讨论(0)
提交回复
热议问题