我在 Oracle DB 中有 2 個不同的資料源。這只是到 Oralce DB(不是 PL SQL)的 SQL 連接。
第一個來源是帶有應用程式 ID 和大量屬性的應用程式表第二個來源是聯系人表。每個聯系人都有一個應用程式 ID(logical_name)、一個型別、一個聯系人、一個電子郵件和一些其他屬性。
我想將它們放在目標位置的應用程式表中
我在這里搜索并根據我學到的知識最終嘗試將我的應用程式表加入這個子查詢:
select
max(logical_name) logical_name,
MAX(CASE WHEN type='APPLICATION SUPPORT OWNER' THEN contact END) Application_Support_Owner,
MAX(CASE WHEN type='APPLICATION SUPPORT OWNER' THEN email END) App_Support_Owner_EMAIL,
MAX(CASE WHEN type='APPLICATION SUPPORT - PRIMARY' THEN contact END) Application_Support_Primary,
MAX(CASE WHEN type='APPLICATION SUPPORT - PRIMARY' THEN email END) App_Support_Primary_EMAIL,
MAX(CASE WHEN type='BUSINESS CONTACT - PRIMARY' THEN contact END) Business_Contact_Primary,
MAX(CASE WHEN type='BUSINESS CONTACT - PRIMARY' THEN email END) Business_Contact_Primary_EMAIL
from contact_table
group by logical_name
我在查看輸出時發現,在某些情況下,特定型別的聯系人不止一個(盡管名稱如“主要”和“所有者”)。因為聯系人是“Last, First”格式并且電子郵件是 [email protected],所以 Max 功能是混合和匹配聯系人和電子郵件。
我認為多個值的最佳答案就是從一個記錄中獲取聯系人和電子郵件,然后將另一個扔掉。它更簡單,我們只需要每個角色(即每種型別)一個聯系人。
我有點像 SQL 菜鳥。除了 Max() 或不同的語法,我是否可以使用其他函式來從同一記錄中生成兩個欄位?我只需要每個應用程式的一行資料,因此我的加入沒有每個應用程式的多個記錄。提前感謝你的幫助。
uj5u.com熱心網友回復:
KEEP與聚合函式一起使用以關聯聚合:
select max(logical_name) logical_name,
MAX(CASE WHEN type='APPLICATION SUPPORT OWNER' THEN contact END)
AS Application_Support_Owner,
MAX(CASE WHEN type='APPLICATION SUPPORT OWNER' THEN email END)
KEEP(
DENSE_RANK LAST
ORDER BY CASE WHEN type='APPLICATION SUPPORT OWNER' THEN contact END NULLS FIRST
) AS App_Support_Owner_EMAIL,
MAX(CASE WHEN type='APPLICATION SUPPORT - PRIMARY' THEN contact END)
AS Application_Support_Primary,
MAX(CASE WHEN type='APPLICATION SUPPORT - PRIMARY' THEN email END)
KEEP(
DENSE_RANK LAST
ORDER BY CASE WHEN type='APPLICATION SUPPORT - PRIMARY' THEN contact END NULLS FIRST
) AS App_Support_Primary_EMAIL,
MAX(CASE WHEN type='BUSINESS CONTACT - PRIMARY' THEN contact END)
AS Business_Contact_Primary,
MAX(CASE WHEN type='BUSINESS CONTACT - PRIMARY' THEN email END)
KEEP(
DENSE_RANK LAST
ORDER BY CASE WHEN type='APPLICATION SUPPORT - PRIMARY' THEN contact END NULLS FIRST
) AS Business_Contact_Primary_EMAIL
from contact_table
group by logical_name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/349017.html
