對於Oracle數據庫,假設我這裏有兩個表(類似的結構,但更大的數據量)的定義如下:的Oracle SQL:表中加入
create table payments(
record_no INTEGER;
cust_no INTEGER;
amount NUMBER;
date_entered DATE;
);
insert into payments values(1,3,34.5,sysdate-1);
insert into payments values(2,2,34.5,sysdate-2);
insert into payments values(3,3,34.5,sysdate-18/1440);
insert into payments values(4,1,34.5,sysdate-1);
insert into payments values(5,2,34.5,sysdate-2/24);
insert into payments values(6,3,34.5,sysdate-56/1440);
insert into payments values(7,4,34.5,sysdate-2);
insert into payments values(8,2,34.5,sysdate-1);
create table customer(
cust_no INTEGER;
name VARCHAR2;
zip VARCHAR2;
);
insert into customer values(1,'Tom',90001);
insert into customer values(2,'Bob',90001);
insert into customer values(3,'Jack',90001);
insert into customer values(4,'Jay',90001);
現在,我要生成與列的報告(獲得每個客戶訂單由paydate前兩種付款金額和日期):
Cust_no | pay_amount1 | pay_date1 |pay_amount2 | pay_date2
報告示例我想
CUST_NO PAYMENT1 PAYDATE1 PAYMENT2 PAYDATE2
1 34.5 October, 09 2013 0 null
2 34.5 October, 08 2013 34.5 October, 09 2013
3 34.5 October, 09 2013 34.5 October, 10 2013
4 34.5 October, 08 2013 0 null
任何人都可以做出正確而有效的查詢嗎?提前致謝。
不僅它慢,你查詢中使用的rownum謂詞會給你一個隨機的行。請查閱文檔,瞭解使用rownum的正確方式 - Oracle Rownum的Google搜索可能只會引發大量示例。 –
這個查詢是錯誤的(在Oracle上),最後兩個子查詢給出錯誤'c.cust_no - 無效標識符 - - 看看這個演示:http://www.sqlfiddle.com/#!4/bf6e1/ 5 – krokodilko
@kordirko我注意到並修改了我的問題,謝謝指出,那麼你的解決方案是什麼? – Frank