将自定义值列表作为附加列添加到SQL查询的末尾
我执行了这样的查询将自定义值列表作为附加列添加到SQL查询的末尾,sql,postgresql,Sql,Postgresql,我执行了这样的查询 SELECT date_trunc('month', "submitted_at" AS "submitted_at", count(distinct "user_id") AS "count" FROM table GROUP BY date_trunc('month', "submitted_at") ORDER BY date_trunc('month', "s
SELECT date_trunc('month', "submitted_at" AS "submitted_at", count(distinct "user_id") AS "count"
FROM table
GROUP BY date_trunc('month', "submitted_at")
ORDER BY date_trunc('month', "submitted_at") ASC
返回如下表(简化日期)
我想添加第三列,其中包含如下自定义值
Date count value
may 2020 7 9
june 2020 9 17
july 2020 20 38
aug 2020 35 94
sep 2020 89 41
oct 2020 104 78
如何更改查询,以便添加额外的列并使用手动输入的值获取上表?我试过下面的方法,但运气不好。数据位于不同的数据库中,因此我无法直接连接数据。我还需要在不在数据库中创建任何新表的情况下执行此查询,因为我必须在各种情况下执行类似的查询,并且不能每次都创建表。这是在postgres数据库中,如果相关的话
SELECT date_trunc('month', "submitted_at" AS "submitted_at", count(distinct "user_id") AS "count", (9,17,38,94,41,78) as "value"
FROM table
GROUP BY date_trunc('month', "submitted_at")
ORDER BY date_trunc('month', "submitted_at") ASC
我将使用带有
值的连接:
SELECT date_trunc('month', "submitted_at") AS "submitted_at",
count(distinct "user_id") AS "count",
v.val as "value"
FROM table t LEFT JOIN
(VALUES ('2020-05-01', 9),
('2020-06-01', 17),
. . .
) v(mon, val)
ON date_trunc('month', "submitted_at") = v.mon
GROUP BY date_trunc('month', "submitted_at"), v.val
ORDER BY date_trunc('month', "submitted_at") ASC;
我做出了一个似乎合理的假设,即您希望值按月份对齐。令人惊讶的是,这起到了作用,我不得不删除了from子句中的t,并将v.val添加到group by,但其他方面都很好。谢谢
SELECT date_trunc('month', "submitted_at") AS "submitted_at",
count(distinct "user_id") AS "count",
v.val as "value"
FROM table t LEFT JOIN
(VALUES ('2020-05-01', 9),
('2020-06-01', 17),
. . .
) v(mon, val)
ON date_trunc('month', "submitted_at") = v.mon
GROUP BY date_trunc('month', "submitted_at"), v.val
ORDER BY date_trunc('month', "submitted_at") ASC;