当前位置: 首页 > 面试题库 >

内部联接SQL Pivot表

洪雅健
2023-03-14
问题内容

我似乎无法内部连接到教师表以获得名字和姓氏。

select * 
from BookingDays bd
inner join Teachers t 
  on t.ID = bd.TeacherID
pivot 
(
  max (bd.BookingDuration) 
  for bd.DayText in ([MONDAY], [TUESDAY], [WEDNESDAY], [THURSDAY], [FRIDAY])
) as MaxBookingDays
where bd.BookingDate >= (SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)) and   
   bd.BookingDate <= (SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 6)) '

我收到的错误消息是

Msg 8156, Level 16, State 1, Line 3
The column 'ID' was specified multiple times for 'MaxBookingDays'.
Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "bd.BookingDate" could not be bound.
Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "bd.BookingDate" could not be bound.

问题答案:

以下错误是因为您未指定列:

Msg 8156,第16级,状态1,第3行

为“ MaxBookingDays”多次指定了“ ID”列。

因此,我将您的查询稍作更改,如下所示:

select *
from
(
  -- don't use select *, call out your fields
  -- and use a sub-query with your WHERE inside the subquery
  select bd.BookingDuration, bd.Otherfields, t.Fields
  from BookingDays bd
  inner join Teachers t 
    on t.ID = bd.TeacherID
  where bd.BookingDate >= (SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)) and   
    bd.BookingDate <= (SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 6))
) src
pivot 
(
  max (BookingDuration) 
  for DayText in ([MONDAY], [TUESDAY], [WEDNESDAY],[THURSDAY], [FRIDAY])
) as MaxBookingDays


 类似资料:
  • 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我尝试用多种方法构建工作选择查询,但仍然不起作用。 也许实体有问题?

  • 问题内容: 例如,我在表中有此数据, 我或该表本身如何,这样我可以在下面获得此结果? 尽我所能,我只想用关键字“ manage”查询行,但我希望 add 的行中的列数据与结果中的 manage 行中的as相同。 是否有可能? 编辑: 我实际表格的简化版本- , 我的实际查询已经很乱了… 结果我目前得到了 但是我在这之后 问题答案: 您只需要两次引用该表: 如果要在列表中查看根,请用左联接替换inn

  • 问题内容: 如何在Hibernate中编写此SQL查询?我想使用Hibernate创建查询,而不是创建数据库。 我在SQLServer2008中创建了实体类, 我试图以多种方式构建有效的选择查询,但仍然无法正常工作。 实体有问题吗? 问题答案: 连接只能在实体之间存在关联时使用。您的Employee实体不应将名称为,类型为的字段映射到列。它应该与Team实体具有ManyToOne关联,并映射为Jo

  • 本文向大家介绍Microsoft SQL Server 内部联接,包括了Microsoft SQL Server 内部联接的使用技巧和注意事项,需要的朋友参考一下 示例 Inner join根据一个或多个条件(使用ON关键字指定)仅返回在两个表中匹配/存在的记录/行。这是最常见的联接类型。的一般语法为inner join: 也可以简化为JOIN: 例 将内部联接与左侧外部联接一起使用(不存在替代)

  • 问题内容: 我试图在一个视图中联接3个表;情况如下: 我有一张桌子,其中包含正在申请住在此大学校园的学生的信息。我还有另一个表格,列出了每个学生的“大厅偏好设置”(其中有3个)。但是这些首选项只是一个ID号,并且ID号在第三张表中有一个对应的Hall Name(不是设计此数据库…)。 差不多,我在桌子上看到了他们的偏好和他们的信息,结果是… 哪里会是。所以现在我想将其与第三个表匹配,该表包含一个和

  • 问题内容: 我了解内部和外部联接的工作方式。但是,在此上下文中,“内部/外部”一词的含义是什么?内部联接到底是什么?外部联接的外部是什么? 最好的问候,维沙尔 问题答案: 另一个角度: 最早的简单实现之一是使用嵌套循环的联接。 对于内部联接,只要联接列匹配,外部循环将遍历任何关系,内部循环将遍历其他关系并创建复合行。因此,将在内部循环中创建并填充输出行。因此,这称为INNER JOIN。 当我们希