我正在尝试构建一个将两个SELECT语句连接到一个输出中的查询。
我正在使用Amazon Redshift。
我附上了我构建的查询,如下所示:
with q1 as (
select count(invoices) as count,to_char(billtime,'yyyy-mm-dd'), store
from sales
group by to_char(billtime,'yyyy-mm-dd'), store
),
q2 as (
select count(a.invoices) as count1, b.store,
to_char(a.billtime,'yyyy-mm-dd')
from sales_detail a, dim_store b
where a.store_id = b.id
group by b.store, to_char(a.billtime,'yyyy-mm-dd')
)
select q1.count(invoices), q2.count(a.invoices), q1.store
from q1
left join q2
on q1.store = q2.store
group by q1.store;
我收到一条错误,指出无效的操作列不存在未命名的连接。
任何人都可以提供帮助。感谢..
答案 0 :(得分:0)
您的选择语句似乎是个问题。由于您已经将两个CTE中的计数别名,您可以选择这些别名:
SELECT
q1.store, q1.count, q2.count1
FROM q1
LEFT join q2
ON q1.store = q2.store
GROUP BY q1.store;
就进一步改进而言,由于您最终希望从两个表中进行商店级聚合,因此无需按每个CTE中的结算日期和进行汇总。因此,对于第一个CTE,您可以使用它:
WITH q1 AS (
SELECT store, COUNT(invoices) AS count
FROM sales
GROUP BY store
)
但也许您从其他需要双重聚合的地方拉出了CTE。
答案 1 :(得分:0)
您可以使用UNION而不是CTE,并注意两个查询都具有相同的列名。之后转发了列和行。