Sql 我想通过在pgadmin中连接两个表来创建透视表视图
我想创建一个透视表视图,显示每个旅行模式的每月预订总数 表1预订-时间戳、预订、提供商id 表2供应商-供应商id、旅行模式 透视表函数和交叉表函数不用于此练习。我想使用连接或其他函数 我不理解我试图运行的这个查询的问题,它显示“关系x不存在” 如果我仔细分析您的查询,我认为这就是您试图做的:Sql 我想通过在pgadmin中连接两个表来创建透视表视图,sql,postgresql,pivot-table,Sql,Postgresql,Pivot Table,我想创建一个透视表视图,显示每个旅行模式的每月预订总数 表1预订-时间戳、预订、提供商id 表2供应商-供应商id、旅行模式 透视表函数和交叉表函数不用于此练习。我想使用连接或其他函数 我不理解我试图运行的这个查询的问题,它显示“关系x不存在” 如果我仔细分析您的查询,我认为这就是您试图做的: with x as ( SELECT to_char(date_,'month') as month, travel_mode, sum(bookings) as amount from boo
with x as (
SELECT to_char(date_,'month') as month, travel_mode, sum(bookings) as amount
from bookings as b
join providers as p on b.provider_id=p.provider_id
group by month, travel_mode) x
)
SELECT c.month, train.amount, bus.amount, air.amount
FROM (
SELECT x.month
FROM x
group by x.month
) c
JOIN x train ON c.month = train.month AND train.amount = 'train'
JOIN x bus ON c.month = bus.month AND bus.amount = 'bus'
JOIN x air ON c.month = air.month AND air.amount = 'air'
如果要多次连接到查询(派生表)的结果,必须将其放入
但是,
select month from x group by month
部分对我来说没有任何意义。这应该被标记为postgresql吗?大概没有表x,您不能加入到查询中创建的子查询中(在mysql中,无论如何不知道postgresql)。如果你能提供样本数据和预期的输出,我相信有人能够提供帮助。顺便说一句,mysql和Postgresql是不同的。您应该只为您想要解决方案的sql方言添加标记。编辑标记:)我如何声明表x以便将其用于联接?我正在尝试按照这里给出的查询进行操作:唯一的区别是我必须创建表x,我可以根据上面的查询使用它。@Vivekarmanni您不需要需要创建表x-CTE会做得很好,我认为这些应该是LEFT JOIN
,除非@VivekAmarnani不想看到2017年5月的火车预订量,如果该月没有公共汽车预订。此外,他可能想在这些连接中使用travel\u mode='train'
,因为金额很可能是一些数值,就像以前的sum()
一样。但我想问题是关于不存在的关系x。
with x as (
SELECT to_char(date_,'month') as month, travel_mode, sum(bookings) as amount
from bookings as b
join providers as p on b.provider_id=p.provider_id
group by month, travel_mode) x
)
SELECT c.month, train.amount, bus.amount, air.amount
FROM (
SELECT x.month
FROM x
group by x.month
) c
JOIN x train ON c.month = train.month AND train.amount = 'train'
JOIN x bus ON c.month = bus.month AND bus.amount = 'bus'
JOIN x air ON c.month = air.month AND air.amount = 'air'