You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中无嵌套子查询实现PostgreSQL的FILTER计数语法

将PostgreSQL的FILTER聚合语法转换为SQL Server兼容写法(无需子查询)

SQL Server不支持PostgreSQL中的FILTER(WHERE ...)聚合语法,这就是你遇到语法错误的原因。要实现相同逻辑且不使用子查询,可以用CASE表达式结合聚合函数来替代。

原PostgreSQL代码

SELECT 
    COUNT(*) AS "QUANTIDADE TOTAL",
    COUNT(*) FILTER(WHERE SEXO = 'Masculino') AS "MASCULINO"
FROM FUNCIONARIOS;

转换后的SQL Server代码

SELECT 
    COUNT(*) AS [QUANTIDADE TOTAL],
    COUNT(CASE WHEN SEXO = 'Masculino' THEN 1 END) AS [MASCULINO]
FROM FUNCIONARIOS;

说明

  • CASE WHEN SEXO = 'Masculino' THEN 1 END会在满足条件时返回1,不满足时返回NULL
  • COUNT()函数会自动忽略NULL值,因此最终统计结果和PostgreSQL的FILTER逻辑完全一致
  • SQL Server中推荐用方括号[]包裹带空格的列别名,若要使用双引号,需先设置SET QUOTED_IDENTIFIER ON;

内容的提问来源于stack exchange,提问作者Ricardo Luiz Vieira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:10:30