sql - 根据组上的条件选择行
问题描述
我有一个下表,代码的值可以从 1 到 10。我只想选择代码值大于或等于 3 的产品,并且不应分配代码 = 9。
ProductId Code
844558 3
844558 3.5
844558 4
296013 2
296013 3
494948 3.5
494948 4
494948 9
392991 4
392991 9.5
结果将只有产品 ID 844558 和 392991。未选择 296013,因为它分配了代码 2 未选择 494948,因为它有代码 9
我在下面写了查询以选择代码大于或等于 3 的记录。如何排除代码 = 9 的产品
Declare @Product Table(ProductId INT, Code DECIMAL(10,2))
INSERT INTO @Product(ProductId, Code)
Select 844558,3
UNION
Select 844558,3.5
UNION
Select 844558,4
UNION
Select 296013,2
UNION
Select 296013,3
UNION
Select 494948,3.5
UNION
Select 494948,4
UNION
Select 494948,9
UNION
Select 392991,4
UNION
Select 392991,9.5
SELECT ProductId
FROM @Product
WHERE Code <> 9
GROUP BY ProductId
HAVING MIN(Code) >= 3
解决方案
加强你的having
条款:
SELECT ProductId
FROM @Product
GROUP BY ProductId
HAVING MIN(Code) >= 3 AND
SUM(CASE WHEN Code = 9 THEN 1 ELSE 0 END) = 0
推荐阅读
- node.js - 无法将请求 /user/register 从 localhost:3000 代理到 http://localhost:3002/
- angular - Ionic 4本地通知自定义声音在android 10中不起作用
- google-apps-script - 在会话/Google 表格工作簿中获取多个活动用户
- sqlite - 如何在 Flutter 中找到转换后的 CSV 文件的路径?(Sqlite 到 CSV)
- php - 使用php创建发票后如何获取条带发票链接
- security - tomcat-7/conf 文件暴露
- flutter - Gridview.count Flutter 不工作并显示黄色和黑色条纹
- php - WordPress 网址短代码
- ios - NSInvalidArgumentException:-[__NSCFNumber count]:无法识别的选择器发送到实例 0x8000000000000000
- javascript - 使用 NodeJS 查找机器制造商名称,例如 HP、Dell、Lenovo 等