【问题标题】:Instantiating temp table based on the result of joins after creating a new variable创建新变量后根据连接结果实例化临时表
【发布时间】:2018-02-08 00:58:36
【问题描述】:

我正在尝试将查询结果存储为 SQL Server 中的临时表。有人可以解释为什么 set 语法在这里是错误的吗?我以为我正确地遵循了from here 格式。

select * 
into #temp_Academic 
set XlistGrp_Course_CRN = s.Subject+' '+s.Course_Number+' ('+x.XlistGrp_Course_CRN+')'
from AcademicYear r 
inner join Xlist x on r.XlistGrp = x.xlistgrp and r.term=x.term
inner join Sections s on x.term = s.Term and x.XlistGrp_Course_CRN = s.CRN

错误:

消息 102,第 15 级,状态 1,第 21 行
'=' 附近的语法不正确。

【问题讨论】:

  • set 是什么?这不是正确的语法

标签: sql-server


【解决方案1】:

该集合用于分配变量,我假设您有错字,在您的帖子中缺少,。一般来说,你不应该同时选择,在一个选择子句中设置。

你要找的只是列的别名,你可以试试:

select *,XlistGrp_Course_CRN = s.Subject+' '+s.Course_Number+'   ('+x.XlistGrp_Course_CRN+')' 
 into #temp_Academic,      
from AcademicYear r 
inner join Xlist x on r.XlistGrp = x.xlistgrp and r.term=x.term
inner join Sections s on x.term = s.Term and x.XlistGrp_Course_CRN = s.CRN

select *,s.Subject+' '+s.Course_Number+' ('+x.XlistGrp_Course_CRN+')' as XlistGrp_Course_CRN 
into #temp_Academic, 
from AcademicYear r 
inner join Xlist x on r.XlistGrp = x.xlistgrp and r.term=x.term
inner join Sections s on x.term = s.Term and x.XlistGrp_Course_CRN = s.CRN

对于您的参考帖子,操作的问题是如何将查询的结果分配给一个变量,而不是直接给出值。

比较:

SELECT @varble = value FROM TABLE -- assume only one value returned

VS

SET @varable = 5 --assume you declared @varable as INT

【讨论】:

    【解决方案2】:
    declare @CListGrp as nvarchar(255)
    
    select *, @XlistGrp_Course_CRN = s.Subject+' '+s.Course_Number+' ('+x.XlistGrp_Course_CRN+')' into #temp_Academic 
    
    from AcademicYear r 
    inner join Xlist x on r.XlistGrp = x.xlistgrp and r.term=x.term
    inner join Sections s on x.term = s.Term and x.XlistGrp_Course_CRN = s.CRN
    

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      相关资源
      最近更新 更多