【问题标题】:create new variable from string variable and a time variable (eg. term) in SQL在 SQL 中从字符串变量和时间变量(例如术语)创建新变量
【发布时间】:2017-09-12 17:08:37
【问题描述】:

我正在尝试根据来自两个不同表的另外两个变量来派生一个变量。我想知道一个学生在他们结束的队列学期(即他们离开大学的学期,无论是否毕业)的课程。我认为合并可能是错误的功能。这是我的代码:

select distinct s.colleagueId,st.term, 
coalesce(EndProgram.EndProgram) EndProgram
from tbl_studentTerms st 
inner join dbo.tbl_Terms t
  on st.term = t.term
  inner join
   tbl_students s
   on st.colleagueId = s.colleagueId 

-- 结束队列计划

left join (
select st.activeProgram as EndProgram
from tbl_studentTerms st
inner join tbl_students s
on s.colleagueId=st.colleagueId
where st.term = s.endingCohort) EndProgram
on EndProgram.colleagueId = s.colleagueId

【问题讨论】:

  • 您希望看到什么,您目前看到了什么?请提供示例输出,而不仅仅是一个描述它的句子。
  • 我得到了错误。它不会运行。在学生术语表中,每个学生每学期有一行。我想要一个派生变量(作为一列添加),在他们的结束队列学期显示他们的程序(仅在学生表中可用,每个学生有一行)。我希望在他们结束队列期间注册的程序中添加一个专栏。我也尝试过做一个案例陈述,但失败了。
  • 如我所说,请提供数据和您遇到的错误。
  • 我收到此错误,这是基于上面的最后一行代码。消息 207,级别 16,状态 1,第 284 行无效的列名称“同事 ID”。哪些数据会有所帮助?
  • 该错误表明您正在引用一个不存在的列。您需要回顾一下您的表格,并确保您的列名拼写正确,并且您期望的列确实存在。就数据而言,如果这不能解决您的问题,那么查看包含示例数据的模拟表(即您查询的数据是什么样的)以及您期望的输出是什么样的会很有用。数据,而不是描述它的句子。

标签: sql sql-server derived-column


【解决方案1】:

您的 End Cohort Program 部分的最后一行,您将加入“on EndProgram.colleagueId = s.colleagueId” - 但是,您标记为 EndProgram 的 select 语句不返回 ColleagueID 列,因此您无法加入它。如果添加它,您可能会解决该特定问题:

left join (
select st.activeProgram as EndProgram,
s.colleagueId as ColleagueID
from tbl_studentTerms st
inner join tbl_students s
on s.colleagueId=st.colleagueId
where st.term = s.endingCohort) EndProgram
on EndProgram.colleagueId = s.colleagueId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多