如何解决检查项目是否有数据
我有一个包含很多字段的表。
我想做的是查看是否有某些项目缺少某些字段。
数据示例:
+--------+----------+-------+
| ITEMNO | OPTFIELD | VALUE |
+--------+----------+-------+
| 0 | x | 1 |
+--------+----------+-------+
| 0 | x | 1 |
+--------+----------+-------+
| 0 | x | 1 |
+--------+----------+-------+
| 0 | x | 1 |
+--------+----------+-------+
| 0 | x | 1 |
+--------+----------+-------+
我想看看是否有4个“ OPTFIELD”全部都是“ ITEMNO”。
所以我要应用的逻辑类似于:
显示所有不包含“ OPTFIELD”-“ LABEL”,“ PG4”,“ PLINE”,“ BRAND”的项目
这有可能吗?
解决方法
您的数据毫无意义。从问题的描述来看,您似乎想要itemno
并没有全部4个optfield
。为此,一种方法使用聚合:
select itemno
from mytable
where optfield in ('LABEL','PG4','PLINE','BRAND')
group by itemno
having count(*) < 4
另一方面,如果要显示所有丢失的(itemno,optfield)
元组,则可以将itemno
的列表与optfield
s的派生表交叉连接,然后使用not exists
:
select i.itemno,o.optfield
from (select distinct itemno from mytable) i
cross join (values ('LABEL'),('PG4'),('PLINE'),('BRAND')) o(optfield)
where not exists (
select 1
from mytable t
where t.itemno = i.itemno and t.optfield = o.optfield
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。