SQL Server Management Studio插入嵌套的select无效列

时间:2018-07-29 21:39:57

标签: sql sql-server

出于某种原因,该行的年份和月份:

(SELECT DENSE_RANK() OVER (ORDER BY [YEAR], [MONTH]), [YEAR] , [MONTH])

突出显示并说“无效列”。

我做错什么了吗? “ yearclass”包含这两个列。当我从from中删除嵌套的select并键入from [dbo].[yearclass]时,它起作用了,因此我认为我的嵌套函数有问题。

INSERT INTO [dbo].[Time] 
     SELECT 
         DENSE_RANK() OVER (ORDER BY [YEAR], [MONTH]), 
         [YEAR], [MONTH] 
     FROM
         (SELECT DISTINCT [YEAR], [MONTH] 
          FROM [dbo].[yearclass]));

2 个答案:

答案 0 :(得分:1)

我认为正确的条款应该是:

log("Something");
log("Another line");

您给我们的查询中有两个sintax错误:

  • 额外的右括号(')')
  • 没有用于嵌套选择的名称

最良好的祝愿。

答案 1 :(得分:1)

该错误的原因是,您在子查询中没有FROM子句。下面的代码在MSSQL Server中工作正常。

CREATE TABLE #YearMonth
(
yearvalue int,
monthvalue int
)

INSERT INTO #YearMonth
values(2018,1), (2017,1),(2016,1), (2018,1);


SELECT DENSE_RANK() OVER (ORDER BY Yearvalue,Monthvalue), yearvalue, monthvalue from #YearMonth