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

使用CTE的多个查询的SQL连接,sql,Sql,我得到一个错误: 没有为“group2”的第2列指定列名 由于这不是一列,只是一个标识符,我不明白为什么它认为代码Group2作为selectcolumn3是一列 我是sql新手,所以这可能只是一个愚蠢的错误 第1列是名称,第2列是该名称的唯一键 第2列和第3列包含相同的精确数据,我只是试图显示它在第3列表的DB中出现的次数,包括0,并将其与第1列关联起来 第3列中的每个数据点仅包含第2列中的数据 提前谢谢 我认为您需要将列命名为COUNTcolumn3,因此 WITH group1 AS (

我得到一个错误:

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

由于这不是一列,只是一个标识符,我不明白为什么它认为代码Group2作为selectcolumn3是一列

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

第1列是名称,第2列是该名称的唯一键

第2列和第3列包含相同的精确数据,我只是试图显示它在第3列表的DB中出现的次数,包括0,并将其与第1列关联起来

第3列中的每个数据点仅包含第2列中的数据


提前谢谢

我认为您需要将列命名为COUNTcolumn3,因此

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;

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

在cte中,每列必须有一个名称。选择columnname将生成名为columnname的列。像count这样的聚合函数不设置列名,因此,正如错误所述,第二个cte中的第二列没有名称。使用

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
)
如果没有聚合函数,则无法将分组中不使用的列添加到选择列表中。此外,您不能将已聚合和未聚合的列添加到选择列表中。但我想,这只是一个打字错误

SELECT column, count(othercolumn) AS ctcol ...
您的cte没有任何名为table1或table2的列,因此您的联接将无法工作。使用从cte中命名的列

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

您不理解错误消息的哪一部分?我觉得这很清楚。我想帕伦夫妇正在搞乱列名。您需要一个别名用于计数。列2是组2的选择列表中的第二列,即COUNTcolumn3,您需要为其提供名称,以便Column3Count=COUNTcolumn3或COUNTcolumn3作为Column3Count。泛型名称与错误消息混合不好,因为您可能会对它引用的内容感到困惑。因为我对sql非常陌生,问题是组2中的select语句中缺少as count。在下一行中,我缺少as count。现在我从下面得到了错误。从组1选择*在组1上加入组2。table1=group2.table2,其中table1和table2在保存无效列名时出错,而在这两个列名中都是db.table结构,并且在上面的工作是我做的。这些是通用名称。Table是指数据库中的实际表名。Column1,2,3是指表1或表2中具有完全独立名称的实际列。我将尝试将列名更改为联接而不是表。我对sql非常陌生,在语法方面有问题。
SELECT * FROM group1 JOIN group2 ON group1.column2 = group2.column2