SQL Server 困难查询

标签 sql sql-server tsql aggregate-functions

我在编写困难查询时遇到问题。我有下表(作为示例)

fusionId | productId | departmentId
    1    |     1     |       1
    2    |     1     |       2
    3    |     2     |       1
    4    |     3     |       2

我想要一个可以将两个 departmentId 传递给 (1,2) 的查询,并且只有当两个 departmentId 都存在时,查询才返回 productId 匹配相同的 productId

例如,如果我发送 departmentId 的 1 和 2,我会得到结果

productId
    1

这可能吗?

最佳答案

SELECT productId 
FROM YourTable
WHERE departmentId IN (1,2)
GROUP BY productId 
HAVING COUNT(DISTINCT departmentId) = 2

或者

SELECT productId 
FROM YourTable
WHERE departmentId = 1
INTERSECT
SELECT productId 
FROM YourTable
WHERE departmentId = 2

关于SQL Server 困难查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8010473/

相关文章:

java - 如何在 spring jpa 中检查日期不为空

sql - 在 SQL Server 中使用最大和最小上限运行总和

c# - 使用 SqlDataAdapter 和环境事务锁定表丢失的触发器中的 SQL Server 错误

sql - SQL:将整数转换为十六进制字符串?

SQL SUM/AVG 查询排除 postgres 中的行

mysql - SQL大查询优化

php - 在类似运算符中输出 $post 值

java - 无法使用 JAVA 连接到 MS SQL Server

sql - 分区表查询性能慢?

sql-server - SQL - 如何获取非聚合结果中的重复项数?