Concatenate multiple rows

后端 未结 2 2022
谎友^
谎友^ 2020-12-12 03:31

I\'m using Microsoft SQL Server 2005.

I think I need a sub-query.

I\'m looking for one (1) row per customer, with the AvailableAction field be a concatenatio

相关标签:
2条回答
  • 2020-12-12 04:06

    For 2005+

    SELECT CustID
         , (SELECT ca.ActionID [@value]
                 , ActionName [text()]
              FROM dbo.CustAction ca
             INNER JOIN dbo.Action ON ca.ActionID = Action.ActionID
             WHERE ca.CustID = c.CustID
               FOR XML PATH('option'), TYPE) AvailableAction
      FROM dbo.Cust c
    

    I don't think you'll be able to get this with FOR XML EXPLICIT, so if this is 2000 you're out of luck (as far as simple solutions go).

    0 讨论(0)
  • 2020-12-12 04:08

    Here's a way that I'm sure will be bettered by someone that knows SQL Server XML!

     SELECT CustID  ,
           CustName,
           REPLACE(REPLACE(
           ( SELECT '<option value="' + CAST(ACTION.ActionID AS VARCHAR) + '">' + ActionName + '</option>'
           FROM    ACTION
                   JOIN CustAction
                   ON      CustAction.CustID = Cust.CustID
           WHERE   CustAction.ActionID       = ACTION.ActionID FOR XML PATH('')
           )
           ,'&lt;','<'),'&gt;','>') AvailableAction
    FROM   Cust
    
    0 讨论(0)
提交回复
热议问题