0

小背景故事:我们有两个调度数据库,我们从中导入数据,将数据馈送到我们的 SQL Server 中。有时这会在同一学术期间为同一教室创建重复记录,但这种情况并不经常发生。我需要做的是在不改变数据库的情况下将它们合并到一行中(因为我还没有这样做的权利)。我只是希望它在我正在运行的查询中生效。

因此,在以下数据中,您可以看到我的所有过滤条件(AcademicPeriod、BuildingNumber、RoomNumber 和 DayOfWeek)都相同,但我有两行显示它在不同时间被占用。

0 = 空置 1 = 占用

学年 | 楼号 | 房间号 | 周天 | 上午 9 点 30 分 | 上午 9 点 45 分 | 下午 12:30 | 下午 12 点 45 分

------201401 -------------- 0001 ------------- 00015 ------------- R ---------- 0 ------- 0 -------- 1 --------- 1---

------201401 -------------- 0001 ------------- 00015 ------------- R ---------- 1 ------- 1 -------- 0 --------- 0---

有没有办法在我的查询中加入这两行(同样不改变表),这样它就只有一行,里面全是'1'?

我在最后期限内解决这个问题,我可以使用你可能有的任何建议。

谢谢!!!

4

4 回答 4

1
SELECT AcademicPeriod , BuildingNumber , RoomNumber , DayOfWeek
       MAX(930A) AS 930A,
       MAX(945A) AS 945A,
       MAX(1230P) AS 1230P,
       MAX(1245P) AS 1245P

  FROM {YourResultSet} 

 Group BY AcademicPeriod, 
          BuildingNumber, 
          RoomNumber, 
          DayOfWeek
于 2013-08-28T17:04:50.547 回答
0

试试这个问题:

SELECT  x.AcademicPeriod, x.BuildingNumber, x.RoomNumber, x.DayOfWeek,
    MAX(x.[9:30a])  AS [9:30a], 
    MAX(x.[9:45a])  AS [9:45a], 
    MAX(x.[12:30p]) AS [12:30p], 
    MAX(x.[12:45p]) AS [12:45p]
FROM    MySchema.MyTable x
GROUP BY x.AcademicPeriod, x.BuildingNumber, x.RoomNumber, x.DayOfWeek;
于 2013-08-28T17:05:21.680 回答
-1

从按 AcademicPeriod、BuildingNumber、RoomNumber、DayOfWeek 的选项卡组中选择 AcademicPeriod、BuildingNumber、RoomNumber、DayOfWeek max(9:30a)、max(9:45a)、max(12:30p)、max(12:45p)

我使用类似上述的结构,通常在插入表中选择...来解决这类问题。

于 2013-08-28T17:07:30.613 回答
-1

我不知道您是如何检索数据的,所以我的建议可能非常愚蠢,但是使用组函数并在职业列中搜索 max() 值怎么样?

select AcademicPeriod, BuildingNumber, RoomNumber, DayOfWeek, max(9:30a), max(9:45a), max(12:30p), max(12:45p)
from table
group by AcademicPeriod, BuildingNumber, RoomNumber, DayOfWeek

这完全取决于您如何导入数据……您能否提供更多详细信息?

于 2013-08-28T17:10:15.813 回答