我很乐意帮助您将此表格的专栏翻译成一行。我试图让项目名称(第1列)成为他们自己的列标题,并将MUV值作为列值输入。
我已阅读了20多个关于此主题的主题,但他们正在使用我无法使用的不同SQL包和代码。
理想的解决方案是修改此查询以创建所需的查询输出:
当前查询:
SELECT
cust_gae_account.project_name as "Project Name",
cust_be_project_usage.unique_visitor_count as "MUVs",
cust_be_project_usage.billing_period_start as "Month"
FROM
cust_be_project_usage
INNER JOIN
cust_gae_account
ON cust_gae_account.account_id = cust_be_project_usage.project_id
WHERE
cust_be_project_usage.admin_account_id = {ACCOUNT_ID}
当前查询输出:
Project Name | MUVs | Month
-----------------------------------------------------
ProjectAAAAAZ | 68000 | Jun 01, 2016
DynamicName | 3200 | Jun 01, 2016
ProjectAAAAAZ | 21000 | May 01, 2016
DynamicName | 4500 | May 01, 2016
CustomProject | 117000 | Jun 01, 2016
CustomProject | 118400 | May 01, 2016
所需的查询输出:
Project Name | CustomProject | ProjectAAAAAZ | DynamicName
-------------------------------------------------------------------
Jun 01, 2016 | 117000 | 68000 | 3200
May 01, 2016 | 118400 | 21000 | 4500
注意:
答案 0 :(得分:0)
您可以使用交叉表https://www.postgresql.org/docs/9.1/static/tablefunc.html,但它只能用于静态列列表。所以你需要一个动态查询。您需要定义该查询并执行它。
EXECUTE ('SELECT * FROM crosstab(
\'SELECT
cust_be_project_usage.billing_period_start as "Month",
cust_gae_account.project_name as "Project Name",
cust_be_project_usage.unique_visitor_count as "MUVs"
FROM
cust_be_project_usage
INNER JOIN
cust_gae_account
ON cust_gae_account.account_id = cust_be_project_usage.project_id
WHERE
cust_be_project_usage.admin_account_id = {ACCOUNT_ID}\',
\'SELECT
cust_gae_account.project_name as "Project Name"
FROM
cust_be_project_usage
INNER JOIN
cust_gae_account
ON cust_gae_account.account_id = cust_be_project_usage.project_id
WHERE
cust_be_project_usage.admin_account_id = {ACCOUNT_ID}\')
AS ( "Project Name" date, ' ||
(SELECT
string_agg(cust_gae_account.project_name, ' int,')
FROM
cust_be_project_usage
INNER JOIN
cust_gae_account
ON cust_gae_account.account_id = cust_be_project_usage.project_id
WHERE
cust_be_project_usage.admin_account_id = {ACCOUNT_ID}) || ' int'
|| ' )')
我无法测试它。它应该工作,但我怀疑它可能不会,在这些情况下:
{ACCOUNT_ID}
参数,因此您可能需要更改