【发布时间】:2021-01-14 10:38:51
【问题描述】:
试图从 SQL 查询 (Postgres) 返回一个二维表。阅读数据透视表(但不确定它是否对连接有效)和交叉表/表函数,但没有运气。
预期结果
App A | App B
2020-01-01 8 | 2
2020-02-01 14 | 5
2020-03-01 13 | 0
我有 2 张桌子:
- 应用程序:名称
- 订单:日期,...
我希望按月和应用计算订单。
到目前为止我的尝试。
SELECT date_trunc('month', date) as date, count(1), x.name
FROM (SELECT date_trunc('month', date) as date, application_id
FROM orders
GROUP BY date, application_id) o
JOIN applications x ON o.application_id = x.id AND x.id in (1, 2, 5)
WHERE
o.date > NOW() - '9 months'::interval
group by date, x.name
order by date, x.name
返回
date count name
2020-01-01 8 App A
2020-01-01 2 App B
2020-02-01 14 App A
2020-02-01 5 App B
谢谢。
【问题讨论】:
-
这是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表格的代码的 SQL。暂停完成总体目标,将代码砍到第一个表达式,而不是给出你期望的内容并说出你期望的内容以及为什么。
标签: sql postgresql count pivot inner-join