【问题标题】:I can't figure out how to Order by with string_agg我不知道如何使用 string_agg 进行排序
【发布时间】:2023-03-23 06:49:01
【问题描述】:

我有这个查询(我使用的是 SQL Server 2019)并且工作正常(将日期和注释组合成一列)。但是,我正在寻找的结果是首先显示最新日期。

我怎样才能从这个查询中实现这一点?

SELECT ID,            

​(SELECT string_agg(​concat(Date, ': ', Notes), CHAR(13) + CHAR(10) + CHAR(13) + CHAR (10)) as Expr1​

    FROM(SELECT DISTINCT nd.Notes, nd.Date
    FROM dbo.ReleaseTrackerNotes AS nd 
    INNER JOIN dbo.ReleaseTracker AS ac4 ON ac4.ID = nd.ReleaseTrackerID
    WHERE (ac4.ID = ac.ID)) AS z_1) AS vNotes 

FROM dbo.ReleaseTracker AS ac

GROUP BY ID

我尝试了 ORDER BY 但没有用 这是我的桌子:

CREATE TABLE [dbo].[ReleaseTrackerNotes](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [ReleaseTrackerID] [int] NULL,
    [AOC_ModelID] [int] NULL,
    [Date] [date] NULL,
    [Notes] [nvarchar](800) NULL,
 CONSTRAINT [PK_ReleaseTrackerNotes] PRIMARY KEY CLUSTERED 
CREATE TABLE [dbo].[ReleaseTracker](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [AOC_ModelID] [int] NOT NULL,
    [MotherboardID] [int] NOT NULL,
    [StatusID] [int] NOT NULL,
    [TestCateoryID] [int] NULL,
    [TestTypeID] [int] NULL,
    [DateStarted] [date] NULL,
    [DateCompleted] [date] NULL,
    [LCS#/ORS#] [nvarchar](20) NULL,
    [ETCDate] [date] NULL,
    [CardsNeeded] [nvarchar](2) NULL,
 CONSTRAINT [PK_Compatibility] PRIMARY KEY CLUSTERED 

【问题讨论】:

    标签: string-aggregation


    【解决方案1】:

    使用WITHIN GROUP (ORDER BY ...):

    SELECT
        ID,            
        STRING_AGG(​TRY_CONVERT(varchar, Date, 101) + ': ' + Notes +
                   CHAR(13) + CHAR(10) + CHAR(13), CHAR(10))
            WITHIN GROUP (ORDER BY Date DESC) AS Expr1​
    FROM
    (
        SELECT DISTINCT ac4.ID, nd.Notes, nd.Date
        FROM dbo.ReleaseTrackerNotes AS nd 
        INNER JOIN dbo.ReleaseTracker AS ac4
            ON ac4.ID = nd.ReleaseTrackerID
    ) AS vNotes
    GROUP BY ID;
    

    【讨论】:

    • 抛出错误“Msg 174, Level 15, State 1, Line 3 The STRING_AGG function requires 2 arguments(s). Msg 156, Level 15, State 1, Line 10 关键字附近的语法不正确'作为'。”
    • 现在我收到 Msg 156, Level 15, State 1, Line 12 关键字'FROM'附近的语法错误。
    • 您的查询似乎有其他问题,我不是在寻找,我已经再次更新。
    • 我已将第二个表格添加到我用来加入的问题中。它仍然没有工作,错误消息 402,级别 16,状态 1,第 3 行数据类型 date 和 varchar 在 add 运算符中不兼容。
    • 在您的Date 上使用TRY_CONVERT 在连接之前先将其转换为文本。
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2017-02-22
    • 2020-01-31
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多