按分组过期日期查询SQL
下面是对我正在编写的查询的简化,但它将其简化为我不确定如何执行的部分 我有一张购物单。在这个表中,有一个ifrprodid、cgroup和dexpire列。如果cgroup列包含“M”,则它是一个分组项。该组中的所有ifrprodid都将与cgroup ifrprodid匹配按分组过期日期查询SQL,sql,Sql,下面是对我正在编写的查询的简化,但它将其简化为我不确定如何执行的部分 我有一张购物单。在这个表中,有一个ifrprodid、cgroup和dexpire列。如果cgroup列包含“M”,则它是一个分组项。该组中的所有ifrprodid都将与cgroup ifrprodid匹配 ifrprodid cgroup dexpire ... 5 1/1/14 8 M 1/1/14 5 M
ifrprodid cgroup dexpire ...
5 1/1/14
8 M 1/1/14
5 M 1/1/15
8 1/1/15
8 1/1/14
我需要做的是选择ifrproid与ifrproid匹配的所有列,其中cgroup是M,dexpire已经通过
换句话说,因为上面第二列的cgroup为M,过期日期为1/1/14,所以我需要包含ifrproid为8的行。但是,由于第三行(cgroup为M的另一行)尚未过期,因此我不应该得到ifrproid为5的任何行
因此,我的结果应该如下所示:
ifrprodid cgroup dexpire ...
8 M 1/1/14
8 1/1/15
8 1/1/14
任何帮助都将不胜感激。首先,请选择所有过期的组: 从prod_表中选择ifrprodid,其中cgroup='M'和dexpire< 现在我们需要这些组中的所有产品,所以在这个列表中使用ifprodid。有两种选择: 连接:在p.ifrprodid=g.ifrprodid上,从prod_表p内部连接prod_表g中选择p.*,其中g.cgroup='M'和g.dexpire<? 子选择:从prod_表中选择*,其中ifrprodid在其中,从cgroup='M'和dexpire<>的prod_表中选择ifrprodid? 假设通用SQL:
select *
from table
where ifprodid in (
select ifprodid
from table
where cgroup = 'M'
and dexpire < today()
)
您使用的是哪种数据库管理系统?博士后?神谕