【发布时间】:2021-01-10 20:00:23
【问题描述】:
我需要收到有关在途产品总量的信息,并根据交货日期分为三列。为了做到这一点,我必须加入下面称为 vll 和 vl 的表。
为了区分日期,我构建了一个案例声明,但是一旦我在声明中使用 vl.arrivdate,我还需要将其添加到 Group By 中。然后我收到三个而不是每个产品一行。
您能否建议如何在不构建另一个大子查询的情况下在一行中达到相同的结果?
这是查询的这一部分的样子
SELECT
SUM(DISTINCT(NVL(vll.qty,0))) as "Transit Total",
CASE
WHEN vl.arrivdate > camp_demand.start_date + 7 THEN NULL
ELSE SUM(DISTINCT(NVL(vll.qty,0))) END as "Transit WK1",
CASE
WHEN TO_DATE(vl.arrivdate) BETWEEN camp_demand.start_date + 7 AND camp_demand.start_date + 14 THEN SUM(DISTINCT(NVL(vll.qty,0)))
ELSE NULL END as "Transit WK2",
CASE
WHEN TO_DATE(vl.arrivdate) > camp_demand.start_date + 14 THEN SUM(DISTINCT(NVL(vll.qty,0)))
ELSE NULL END as "Transit WK3"
GROUP BY
camp_demand.start_date,
vll.qty,
vl.arrivdate
下面是我现在得到的结果:
【问题讨论】:
标签: sql oracle group-by aggregate