面临这样的问题
有 2 个标签product和pdate
pdate表有2 个字段 [ start, update ]
在表产品中- 有一个字段 [类型]
任务的本质:
- 您需要在start字段的pdate表中找到一个新的日期(但如果有update ,那么它更相关)
- 您只需要比较特定类型的产品,例如21对于此类产品,您需要从今天的日期减去 1 个月
- 结果,您需要计算产品数量(基于数据1和2),如果日期开始或更新[1步]小于今天-1个月[2步] - 那么我们考虑
我的想法和我的尝试。
我对sql的经验很少,我尝试将所有带有条件的行(其中有3行)都写在下select
,然后随着第3行的进行,count
前2行进入第group by
3步,但是前2行的数据需要步骤。后来才知道count
类似的功能是不能拉取数据的,group by
看了几篇文章才知道有嵌套查询这样的问题,但也没有得到想要的结果。
select
y.result
from (select
nvl(tda.start,tda.update) as fresh_date
,case where tpo.type = '21' there add_mothe(to_date(sysdate),-1) end
as product_date
,count(case where res > fdate there 1 else null end) result
from pdate as tda inner join product as tpo on tda.id=tpo.id
group by nvl(tda.start,tda.update),
case where tpo.type = '21' there add_mothe(to_date(sysdate),-1) end
)y;
还有 3 个嵌套的。
select
y.result
from (select
nvl(tda.start,tda.update) as fresh_date
,case where tpo.type = '21' there add_mothe(to_date(sysdate),-1) end
as product_date
,(select count(case where res > fdate there 1 else null end)
from pdate as tda inner join product as tpo on tda.id=tpo.id ) result
from pdate as tda inner join product as tpo on tda.id=tpo.id
group by nvl(tda.start,tda.update),
case where tpo.type = '21' there add_mothe(to_date(sysdate),-1) end
)y;
尝试了不同的东西,但没有结果
同志们,成功了!
我想分享我的解决方案。
要解决,您需要 3 个嵌套
对于新手来说,我偶然发现了一些重要的技巧。有 3 个嵌套查询。我们以 3 个嵌套的形式显示表,为了能够访问先前查询级别中表中的字段,它们必须在我们规定表的查询中声明。
那些
我希望这些信息对你有用,祝你有美好的一天!