sql - 不同字段的 Sql 代码
问题描述
我想知道是否有人可以帮助我解决这个问题。
我有两张桌子要连接在一起(DDS2ENVR.QBO AND KCA0001.ORTS
)
该表有一个标记为NIINQBO
和 RIC 的字段。KCA0001.ORTS
该表有一个名为 SERVICE 和 OWN_RIC 的字段。
QBO.RIC
我通过和加入表格ORTS.OWN_RIC
。我的困境是,在 NIIN 字段下,多行可以相同,但 RIC 具有不同的值。
例子:
NIIN RIC
123455 A
122222 B
123456 C
122222 A
我想查询一个NIINS
由不重叠的不同服务分隔的不同计数。因此,示例NIIN
应该只找到仅与 A 相关联的不同值,NIIN
而在 B、C、D 等中找不到相同的值。
SELECT D.SERVICE, COUNT(C.NIIN)
FROM DDS2ENVR.QBO C
JOIN KCA0001.ORTS D ON D.OWN_RIC = C.RIC
WHERE C.SITE_ID = ('HEAA')
GROUP BY D.SERVICE
HAVING COUNT(DISTINCT C.NIIN) > 1
如果这没有任何意义,请提出问题。
解决方案
使用Not Exists
SELECT D.SERVICE, COUNT(C.NIIN)
FROM DDS2ENVR.QBO C
JOIN KCA0001.ORTS D ON D.OWN_RIC = C.RIC
WHERE C.SITE_ID = ('HEAA')
and NOT EXISTS (Select 1 from DDS2ENVR.QBO C1 where C1.NIIN = C.NIIN and C1.RIC <> C.RIC)
GROUP BY D.SERVICE
HAVING COUNT(DISTINCT C.NIIN) > 1
此外,如果表DDS2ENVR.QBO
不包含重复项并且您的 dbms 支持CTE
With cte as
(Select NIIN from DDS2ENVR.QBO group by NIIN having count(*) = 1)
SELECT D.SERVICE, COUNT(C.NIIN)
FROM DDS2ENVR.QBO C
JOIN KCA0001.ORTS D ON D.OWN_RIC = C.RIC
WHERE C.SITE_ID = ('HEAA')
and C.NIIN in (Select * from cte)
GROUP BY D.SERVICE
HAVING COUNT(DISTINCT C.NIIN) > 1
推荐阅读
- ssl - 从秘密创建 OpenShift TLS 路由
- angular - 离子相机:没有名称的表单控件的值访问器
- java - Java - 带有冲突正则表达式的 string.split
- jsonschema - 如何使用 JSON Schema 有条件地指定默认值
- c# - Powershell addscript和从C#调用不在命令行上显示结果
- java - 尝试使用反射获取对字段的引用时出现 IllegalArgumentException
- javascript - 页面加载时在 Javascript/Jquery 中对引导模态体元素进行排序
- c++ - 位摆弄:否定一个int,只有当它是负数时
- javascript - 鼠标按下附加项目
- c# - 批量重命名重构