【发布时间】:2018-03-23 16:17:22
【问题描述】:
我试图在 SQL 查询中加入一些逻辑以获得所需的结果,而无需在后端代码中进行后处理逻辑。
下面是我现在的查询:
SELECT
milestone.id,
milestone.initiative_id,
milestone.created,
milestone.modified,
status.name as "statusName",
(COUNT(activity.id))::int as "activityCount",
MAX(activity.end_on) AS "activityMaxEndOn",
milestone.name,
milestone.description,
activity.status
FROM
milestone
INNER JOIN
status
ON
status.id = milestone.status
LEFT JOIN
activity
ON
activity.milestone_id = milestone.id
GROUP BY
milestone.id, status.name, activity.status
它返回通过在 status 表上 JOINing milestone status 检索到的 statusName。它还返回id 的状态activity 已加入此milestone。我需要:
- Get `status.name` for the `activity` as well, not just `id.
- Get count() of `DISTINCT` status entries from `activity` for each status
例如列:milestoneStatusName,每个状态的 count(statusX)。
【问题讨论】:
-
你正在使用哪个数据库??
-
Postgres - 理想情况下,获得通用 SQL 解决方案会很好,例如不是存储过程,而是查询。如果可以的话,
-
::int 是什么意思(这不是 sql 标准)
-
样本数据和期望的结果真的很有帮助。