Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我想通过在pgadmin中连接两个表来创建透视表视图_Sql_Postgresql_Pivot Table - Fatal编程技术网

Sql 我想通过在pgadmin中连接两个表来创建透视表视图

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

我想创建一个透视表视图,显示每个旅行模式的每月预订总数

表1预订-时间戳、预订、提供商id 表2供应商-供应商id、旅行模式

透视表函数和交叉表函数不用于此练习。我想使用连接或其他函数

我不理解我试图运行的这个查询的问题,它显示“关系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'
如果要多次连接到查询(派生表)的结果,必须将其放入


但是,
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'