sql - INNER JOIN 多个数据库表中的 SQL 计数
问题描述
以下查询返回几行,但我想对 BCO.[MAIN_ID] 进行计数,因此在最终输出中,每行中的列 BCO.[MAIN_ID] 都有与 BCO.[MAIN_ID] 连接的用户计数。
SELET CS.[TEST_ID], CS.[TESTGROUP_ID], BCO.[MAIN_ID] as COUNT FROM [DB_01].[dbo].[DS_TABLE] as CS
LEFT JOIN
[DB_02].[dbo].[C_TABLE] as BCO on CS.[TEST_ID] = BCO.[TEST_ID]
LEFT JOIN
[DB_02].[dbo].[CR_TABLE] as FOO on BCO.[UID] = FOO.[UID]
我在使用单个数据库时测试了计数,它工作正常。但是当使用像这里这样的多个数据库时它不起作用。
如果我尝试计数,则会出现错误。
SELET CS.[TEST_ID], CS.[TESTGROUP_ID], count(BCO.[MAIN_ID]) as COUNT FROM [DB_01].[dbo].[DS_TABLE] as CS
LEFT JOIN
[DB_02].[dbo].[C_TABLE] as BCO on CS.[TEST_ID] = BCO.[TEST_ID]
LEFT JOIN
[DB_02].[dbo].[CR_TABLE] as FOO on BCO.[UID] = FOO.[UID]
Column 'DB01.dbo.DS_TABLE.test_id is invalid in the select list because it is not contained in either an aggregate function or the group by clause
我什至尝试过 group_bygroup by BCO.[MAIN_ID]
解决方案
你需要GROUP BY
:
SELECT CS.[TEST_ID], CS.[TESTGROUP_ID], count(BCO.[MAIN_ID]) as COUNT
FROM [DB_01].[dbo].[DS_TABLE] CS LEFT JOIN
[DB_02].[dbo].[C_TABLE] BCO
ON CS.[TEST_ID] = BCO.[TEST_ID] LEFT JOIN
[DB_02].[dbo].[CR_TABLE] as FOO
ON BCO.[UID] = FOO.[UID]
GROUP BY CS.[TEST_ID], CS.[TESTGROUP_ID];
推荐阅读
- php - 重写 php switch 语句的 url
- flutter - “Null”不是“String”类型的子类型
- apache-kafka-connect - Debezium SMT 转换重新路由关键字段设置不起作用
- xtermjs - 如何从 xterm.js 获取 stty 回显模式?
- javascript - Nested Axios Call Only Returns First Value to Array
- java - 需要从具有用户名和密码但抛出 SMBApiException 的 java 连接 shred 驱动器
- mysql - 如何在 SQL 存储过程中打印变量?
- php - jqGrid: PHP 8+ Breaking Demos和基于Demos的代码
- python - R -- 根据标准从 json 输出中提取字符串
- sql - 在每 3 个字符后添加逗号