MSSQL如何从查询聚合行(不是表)

时间:2015-01-23 14:42:17

标签: sql-server aggregate

我需要在此查询中将行聚合为字符串:

WITH requery AS 
    (SELECT  CAST ( Name AS VARCHAR(1000) ) as Folder, f1.ParentFolderID, unt.NetworkName, unt.Model, Marker
    FROM    [Base].[dbo].[Folders] as f1
    JOIN (
        SELECT u.NetworkName, m.Name as Model, u.ParentFolderID, ma.Name as Marker
        FROM Base.dbo.Units as u
            JOIN Base.dbo.Models as m
            ON u.ModelID=m.ModelID
            LEFT JOIN Base.dbo.MarkerLinks as ml
            ON u.ParentFolderID=ml.FolderID
            LEFT JOIN Base.dbo.MarkerS as ma
            ON ml.MarkerID = ma.MarkerID
        WHERE u.NetworkName LIKE 'pcname'   ) as unt ON unt.ParentFolderID = f1.FolderID
    UNION ALL
    SELECT  CAST ( (f.Name + '\' + f2.Folder) AS VARCHAR(1000) ) as Name, f.ParentFolderID, f2.NetworkName, f2.Model, f2.Marker
    FROM    [Base].[dbo].[Folders] f
    JOIN    requery as f2
    ON      f.FolderID = f2.ParentFolderID)
SELECT  NetworkName,Model,Folder,Marker
FROM    requery
WHERE ParentFolderID is NULL

将数据返回为

  1. pcname model location user1
  2. pcname model location user2
  3. pcname model location user3
  4. 但我需要

    1. pcname模型位置user1,user2,user3
    2. 我知道OUTER APPLY(like there),但我不明白如何在这里使用它。感谢。

1 个答案:

答案 0 :(得分:0)

我是#$#$#,只是使用this来查询部分查询并且它正在运行!

SELECT  NetworkName,Model,Folder,Marker
FROM    requery
WHERE ParentFolderID is NULL

感谢4 all和NiMa独家)