不知您是否可以幫助我?我是新來的SQL,我真的很苦惱這個查詢。我環顧四周,但是很新,我很快就感到困惑!創建SQL查詢將多個相關行組合在一起
我爲一組企業客戶繼承了不同地址的表。該表位於Oracle 12c服務器上,我正在使用SQL Developer。
我想將此信息附加到另一個查詢的末尾,以便人們在結束報告中查看單個客戶的所有相關信息更容易一些。
該表是佈局像這樣:
| CUST_ID | ADDRESS_TYPE | CONTACT_NAME | ADDRESS | CITY | ... |
------------------------------------------------------------------
| 1000| SITE | A SMITH | A ROAD | A TOWN |
| 1000| BUILDER | B JONES | B ROAD | B TOWN |
| 1000| ARCHITECT | A BROWN | C ROAD | A CITY |
| 1001| SITE | B SMITH | A LANE | C TOWN |
| 1001| ARCHITECT | D BROWN | D ROAD | B CITY |
| 1002| SITE | E SMITH | B LANE | D TOWN |
| 1002| ARCHITECT | C JONES | B ROAD | A CITY |
| 1002| BUILDER | F SMITH | C LANE | B TOWN |
我想創造的是:
| CUST_ID | SITE_NAME | SITE_ADDRESS | SITE_TOWN | BUILDER_NAME | BUILDER_ADDRESS | BUILDER_TOWN | ... |
| 1000 | A SMITH | A ROAD | A TOWN | B JONES | B ROAD | B TOWN | ... |
| 1001 | B SMITH | A LANE | A TOWN | NULL | NULL | NULL | ... |
| 1002 | E SMITH | B LANE | D TOWN | F SMITH | C LANE | B TOWN | ... |
有3 ADDRESS_TYPE
,我感興趣的是:SITE
,BUILDER
和ARCHITECT
。因此,我不希望每CUST_ID
每ADDRESS_TYPE
有一行,我想每CUST_ID
得到一行,每個ADDRESS_TYPE
的尋址信息作爲額外的列。我將使用CUST_ID
將結果加入另一個查詢。
我不知道我是否應該嘗試多個連接或是否可以做某種子查詢?
非常感謝您的時間和幫助,我真的很感激它!
感謝Hogan,我不確定在重複引用同一個表時連接是否合適。我認爲它可能真的效率低下,但現在我知道只是放棄它!再次感謝您的幫助 – Nikkunaku
@Nikkunaku - 根據表格的大小和定義的索引,這樣可以比使用聚合更快 – Hogan
我最終試用了兩種方法,並且您的聯合版本在1.74秒內獲得了380k結果而對於條件聚合方法只有不到10秒。因爲它更容易看到發生了什麼並且更快,所以將其更改爲答案。再次感謝您的幫助:D – Nikkunaku