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 2
和column 3
包含相同的确切数据,我只是试图在第3列表(包括0)上显示它在数据库中出现的次数,并将其关联回列1.
column 3
中的每个数据点仅包含来自column2
的数据。
谢谢!
答案 0 :(得分:0)
我认为您需要将列命名为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
)
答案 1 :(得分:0)
该查询有很多错误,我不知道从哪里开始
在cte中,每列都必须有一个名称。 select columnname
将结果列命名为columnname
。像count
这样的聚合函数没有设置列名,因此第二个cte中的第二列没有名称,因为错误状态。使用
SELECT column, count(othercolumn) AS ctcol ...
如果没有聚合功能,则无法将不在分组中使用的列添加到选择列表中。此外,您无法将汇总和未汇总的列添加到选择列表中。但是我想那只是错字
SELECT column2, COUNT(column3) AS ctcol
FROM tablexy
...
GROUP BY column2
您的CTE没有任何名为table1
或table2
的列,因此您的联接将不起作用。使用以cte命名的列
SELECT * FROM group1 JOIN group2 ON group1.column2 = group2.column2