返回选定的状态表,然后从另一个表中加入这些状态的计数。 SQL
Posted
技术标签:
【中文标题】返回选定的状态表,然后从另一个表中加入这些状态的计数。 SQL【英文标题】:Return a selected status table and then join a count of those statuses from another table. 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 子句或 更改跟踪上下文子句,前面的语句必须是 以分号结尾。
【问题讨论】:
【参考方案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
函数 - 我相信您正在寻找 ISNULL
或 COALESCE
。您当然可以将其包含在您的查询中 - 我为您更新了我的答案。
是的,这就是我想要做的。以上是关于返回选定的状态表,然后从另一个表中加入这些状态的计数。 SQL的主要内容,如果未能解决你的问题,请参考以下文章