Sql 检查项目是否有数据

Sql 检查项目是否有数据,sql,sql-server,count,subquery,having-clause,Sql,Sql Server,Count,Subquery,Having Clause,我有一个包含大量字段的表 我试图做的是查看是否有任何项缺少某些字段 数据示例: +--------+----------+-------+ | ITEMNO | OPTFIELD | VALUE | +--------+----------+-------+ | 0 | x | 1 | +--------+----------+-------+ | 0 | x | 1 | +--------+----------+-------+

我有一个包含大量字段的表

我试图做的是查看是否有任何项缺少某些字段

数据示例:

+--------+----------+-------+
| ITEMNO | OPTFIELD | VALUE |
+--------+----------+-------+
| 0      | x        | 1     |
+--------+----------+-------+
| 0      | x        | 1     |
+--------+----------+-------+
| 0      | x        | 1     |
+--------+----------+-------+
| 0      | x        | 1     |
+--------+----------+-------+
| 0      | x        | 1     |
+--------+----------+-------+
有4个“OPTFIELD”,我想看看是否所有的“ITEMNO”都有

因此,我想应用的逻辑大致如下:

显示没有“OPTFIELD”的所有项目-“标签”、“PG4”、“PLINE”、“品牌”


这可能吗?

您的数据毫无意义。从对问题的描述来看,似乎您需要的
itemno
不包含所有4个
optfield
s。为此,有一种方法使用聚合:

select itemno
from mytable
where optfield in ('LABEL', 'PG4', 'PLINE', 'BRAND')
group by itemno
having count(*) < 4

您好,GMB,谢谢您的回复。该表还有其他“OPTFIELD”,但我想看看它们是否有“LABEL”、“PG4”、“PLINE”、“BRAND”。理论上,这些字段本身在我们的ERP中是可选文件,不需要添加到项目中,但在我的场景中,我需要它们,我找不到方法来查看它们是否不存在,这是否有意义?
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
)