【问题标题】:Return a selected status table and then join a count of those statuses from another table. SQL返回选定的状态表,然后从另一个表中加入这些状态的计数。 SQL
【发布时间】:2014-04-29 13:00:09
【问题描述】:

我从状态表中选择了所有状态,然后想添加一个包含这些状态计数的新列。如果什么也没找到,则默认值为零。

SELECT
    AQA.StatusId,
    AQA.[Description],
    NULL(Count(AQ.ActiveStatus)) AS Count
FROM
    AP_QuoteActiveStatus AS AQA WITH(NOLOCK)
    LEFT OUTER JOIN AP_Quote AS AQ WITH(NOLOCK) ON AQ.ActiveStatus = AQA.StatusId
ORDER BY AQA.[Description]

我读到的错误是:

消息 102,级别 15,状态 1,第 4 行“计数”附近的语法不正确。消息 319, Level 15, State 1, Line 6 关键字附近的语法错误 '和'。如果此语句是公用表表达式,则 xmlnamespaces 子句或更改跟踪上下文子句,前一个 语句必须以分号结束。消息 319,第 15 级, 状态 1,第 7 行 关键字“with”附近的语法不正确。如果这 statement 是公用表表达式、xmlnamespaces 子句或 更改跟踪上下文子句,前面的语句必须是 以分号结尾。

【问题讨论】:

    标签: sql sql-server select join


    【解决方案1】:
    SELECT
        AQA.StatusId,
        AQA.[Description],
        Count(ISNULL(AQ.ActiveStatus, '0')) AS [Count]
    FROM
        AP_QuoteActiveStatus AS AQA WITH(NOLOCK)
    LEFT OUTER JOIN AP_Quote AS AQ WITH(NOLOCK)
        ON AQ.ActiveStatus = AQA.StatusId
    GROUP BY AQA.StatusId, AQA.[Description]
    ORDER BY AQA.[Description]
    

    【讨论】:

    • 谢谢你的作品。是 Grouped by 删除了外部连接的重复项吗?
    • 是的,GROUP BY 在这种情况下就是这样做的。
    • 谢谢,由于计数的默认返回值为 0,我不需要 NULL(Count(AQ.ActiveStatus),'0')?
    • 对不起,我不明白你想做什么。在 TSQL 中,没有 NULL 函数 - 我相信您正在寻找 ISNULLCOALESCE。您当然可以将其包含在您的查询中 - 我为您更新了我的答案。
    • 是的,这就是我想要做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多