繁体   English   中英

使用CTE的多个查询的SQL连接

[英]SQL join of multiple queries using CTE

WITH group1 AS 
(    
    SELECT 
        [column1],
        [column2]   
    FROM 
        table1
),
Group2 AS 
(
    SELECT
        (column3),  
        COUNT(column3) 
    FROM
        table 2 AS Count   
    WHERE
        (year (date_value) = 2018 and month(Date_vaLue) = 2)
    GROUP BY
        column2
)
SELECT *
FROM group1
JOIN group2 ON group1. table1 = group2.table2;

我收到一个错误:

没有为“ group2”的第2列指定列名

由于这不是一列,而只是一个标识符,我很困惑为什么它认为代码(Group2 AS (Select (column3 ),)是一列)。

我是sql的新手,所以这可能只是一个愚蠢的错误

Column 1是一个名称, Column 1是该名称的唯一键

Column 2 column 3Column 2 column 3包含相同的确切数据,我只是想在第3列表上显示它在数据库中出现的次数(包括0),并将其关联回第1列。

column 3中的每个数据点仅包含来自column2数据。

提前致谢!

我认为您需要命名列COUNT(column3),所以...

Group2 AS (Select (column3 ),
COUNT (column3) as cntr
From table 2 as Count
Where (year (date_value) = 2018 and month(Date_vaLue) = 2)
Group by column2
)

该查询有很多错误,我不知道从哪里开始

在cte中,每列都必须有一个名称。 select columnname使结果列命名为columnname count这样的聚合函数没有设置列名,因此第二个cte中的第二个列没有名称,因为错误指出。 采用

SELECT column, count(othercolumn) AS ctcol ...

如果没有聚合功能,则无法将不在分组中使用的列添加到选择列表中。 此外,您无法将汇总和未汇总的列添加到选择列表中。 但我想那只是错字

SELECT column2, COUNT(column3) AS ctcol
FROM tablexy
...
GROUP BY column2

您的CTE没有任何名为table1table2列,因此您的table2将不起作用。 使用从cte命名的列

SELECT * FROM group1 JOIN group2 ON group1.column2 = group2.column2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM