【问题标题】:How to write ms sql code for two column with same datas in MS SQL如何在 MS SQL 中为具有相同数据的两列编写 ms sql 代码
【发布时间】:2012-05-10 16:31:31
【问题描述】:

这里有两张桌子。

Table1
SchoolID   Teacher_name   comm_yr
01          John            1990
02          Heley           1995
03         George          1994
04          Chris           1998
05          Mary            1993

Table2
School_ID   Student_name
01        Heley
02        Chris
03        Chris
04        Mary
05        Heley

我想列出每个学生作为学生的年份和每个学生作为老师的年份。

    SELECT Teacher_name, comm_yr As Teacher_comm_yr, comm_yr As Student_comm_yr
FROM Table1 INNER JOIN Table2
WHERE comm_yr (SELECT comm_yr As Teacher_comm_yr From Table1
Where teacher_name=student_name);

表格显示

Teacher_name    Teacher_comm_yr  Student_comm_yr
John                   1990 1990
Heley                 1995  1995
George                 1994 1994
Chris                  1998 1998
Mary                    1993    1993

但我想要的是

Teacher_name    Teacher_comm_yr Student_comm_yr
John               1990 
Heley               1995     1990
George              1994    
Chris               1998      1995
Chris               1998     1994
Mary                1993     1998

但我只能在同一年执行 你能帮忙吗..

谢谢!

【问题讨论】:

  • 请提供所需的输出样本。
  • 出现错误。我什至无法执行它
  • 他的意思是对于上述两个基表,您期望看到的输出是什么。您不必运行查询。通过键入它自己构建它。:/
  • 我已经编辑过了。请忽略年份的顺序。

标签: mysql ms-access-2010 django-mssql


【解决方案1】:

一些笔记。

SELECT 
  t1.Teacher_name, 
  t2.Student_name, 
  t1.comm_yr AS Teacher_comm_yr, 
  t1.comm_yr AS Student_comm_yr
FROM Table1 AS t1 
LEFT JOIN Table2 AS t2 
ON t2.student_name = t1.teacher_name;

根据你的数据,我不明白 Chris 是从哪里得到 1995 年的。

那么怎么样:

SELECT t.SchoolID,
       t.Teacher_name,
       t.comm_yr,
       q.SchoolID,
       q.Teacher_name,
       q.Student_name,
       q.comm_yr
FROM   table11 t
       LEFT JOIN (SELECT a.SchoolID,
                         a.Teacher_name,
                         b.Student_name,
                         a.comm_yr
                  FROM   table11 AS a
                         INNER JOIN table22 AS b
                           ON a.SchoolID = b.School_ID) AS q
         ON t.Teacher_name = q.Student_name; 

我添加了比必要更多的字段(列)来测试这个想法。

【讨论】:

  • 克里斯是 t1 时 Heley 手下的学生
  • 感谢您的帮助,但它的显示就像第一张桌子一样。所有的岁月都一样。我想要第二张这样的桌子。
  • 好的,我想我明白你想要什么了。
  • 感谢我现在可以执行的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
相关资源
最近更新 更多