2013-08-28 68 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