【发布时间】:2018-12-11 16:17:51
【问题描述】:
如果以前有人问过这个问题,我很抱歉,在分解和发布之前我无法找到类似的问题/解决方案。我有以下查询(使用 Oracle SQL)在某种意义上可以正常工作,但不完全是我正在寻找的。
SELECT
order_date,
p_category,
CASE
WHEN ( issue_grp = 1 ) THEN '1'
ELSE '2/3 '
END AS issue_group,
srt AS srt_level,
COUNT(*) AS total_orders
FROM
database.t_con
WHERE
order_date IN (
'&Enter_Date_YYYYMM'
)
GROUP BY
p_category,
CASE
WHEN ( issue_grp = 1 ) THEN '1'
ELSE '2/3 '
END,
srt,
order_date
ORDER BY
p_category,
issue_group,
srt_level,
order_date
当前返回(12 行):
需要返回(8 行不显示棕褐色行):
这是我期望的 total_order 列的逻辑:
- count of order_date where (srt_level = 80 + 100 + Late) ... 'Late' 计数需要添加到总数中,只是不显示
我最终会添加一个 Filled_orders 列,该列将位于 total_orders 列之前,但我还没有到那里。
抱歉,我之前的描述性不强。再次感谢!
【问题讨论】:
-
我认为这个答案有你想要的:stackoverflow.com/questions/1521605/…。
-
向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
-
分析函数在这里也可以为您提供帮助。
count(*) over (Partition by p_category, issue_group, srt_level)?使您可以独立于查询中的分组进行计数。但我不完全理解你的问题/查询,所以这可能是错误的。示例数据和预期结果将大有帮助。 -
更新了……抱歉!