問題陳述:形成一個SQL查詢,跨行比較結果
選擇所有商店的名字,他們的身份,電話號碼,生效日期 ,其電話號碼從2003年已經被改變,直到當前的日期。
Schema是
store_name,phone number , start_date , status
示例行
abc 1234 30-DEC-2011 open
abc 3433 04-Jan-2012 close
bbb 4444 30-Jan-2010 open
bbb 4444 31-Jan-2011 open
輸出
abc 1234 open 30-DEC-3011 till 3-Jan-2012
abc 3433 close 04-Jan-2012 till date
我還具有細等
與排序的開始日期輸出兩行abc 1234 30-DEC-2011 open
abc 3433 04-Jan-2012 close
bbb
不應該被報告,因爲電話號碼沒有變化。我們應該只報告那些電話號碼發生變化的商店。
有人可以幫助我在Oracle上進行此查詢嗎?我想通過使用相關的查詢它可以完成,但我不知道如何構建一個。
請注意,我的表有大約3154953條記錄,所以我還需要確保相關查詢不會鎖定整個表的很長時間。這對Oracle來說甚至可能嗎?
謝謝!
APC的答案適用於我,只是我看到了很多重複的結果。
對於輸入:
select store_name,phone_number,start_date, status where store_name=abc;
回報
STORE_name Phone number start_date STATUS
---------------- ---------------- ----------- ----------
abc 122 18-JAN-2011 open
abc 122 18-JAN-2011 open
abc 122 18-JAN-2011 close
運行您的查詢給我下面的輸出。
abc 122 open from 18-JAN-2011 to 17-JAN-2011
abc 122 open from 18-JAN-2011 to 17-JAN-2011
abc 122 close from 18-JAN-2011 to date
你能解釋爲什麼以及在哪裏錯過?
這是MySQL還是Oracle? – 2012-01-05 12:56:32
@ManseUK - 你已經刪除了[mysql]標籤,並忽略了標題中對MySQL的引用。請確保您的更改不會在開始編輯之前扭曲OP的意圖。 – APC 2012-01-05 17:10:01
@APC道歉...這就是2編輯錯誤今天作出了....添加標籤回...雖然我真的不知道爲什麼它在標題或標記? – ManseUK 2012-01-05 17:11:46