2013-08-28 36 views
0

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

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

0 =空置1 =占用

AcademicPeriod | BuildingNumber | RoomNumber | DayOfWeek | 9:30a | 9:45a | 12:30p | 12:45p

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

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

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

我在截止日期之前弄明白这一点,我可以使用你可能有的任何建议。

谢谢!!!

+0

嗨,欢迎来到SO。那么这与MySQL有什么关系? – Strawberry

回答

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 
+0

这正是我所需要的。谢谢!我读完之后,在20分钟内完成设置。在此之后,我将更多地关注聚合函数。谢谢大家的意见和帮助! – Jake

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; 
-1

选择AcademicPeriod,BuildingNumber,RoomNumber,星期 最大(9:30A),最大值(9:45A),最大值(12:30P),最大值( 12:45P) 从由AcademicPeriod,BuildingNumber,RoomNumber标签 基,DAYOFWEEK

我用构建体像以上,常常在一个 插入到表中选择...... 解决这种类型的问题。

-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 

这一切都取决于你如何导入你的数据......你能提供更多的细节吗?

+0

我从具有特定架构的各种视图中提取所有数据,而这些视图可以访问。所以我身体上不能改变表格数据。唯一的例外是我在查询形成的结果集中提取的数据。 – Jake