tsql order by with distinct for xml path

tsql order by with distinct for xml path

我有一个查询,我稍后会用它来进行动态数据透视。我想在执行不同之前订购此查询。我怎么能做到这一点?每当我订购它时,它都会完全打破差异。

    DECLARE @cols NVARCHAR(max);
SET @cols = STUFF
(
    (SELECT distinct ',' + c.[PivotColumnTitle]
        FROM [myTable] c
        WHERE c.Id = @idInput
        AND c.IsPivotVisible = 1
              --order by c.PivotColumnOrder
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,''
)

试试这个:

DECLARE @cols NVARCHAR(max);

SET @cols = STUFF
(
    (
        SELECT ',' + c.[PivotColumnTitle]
        FROM [myTable] c
        WHERE c.Id = @idInput
            AND c.IsPivotVisible = 1
        GROUP BY c.[PivotColumnTitle]
        order by MAX(c.PivotColumnOrder)
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,''
)