2017-09-13 96 views
0

我們有一個需要轉置查詢結果的需求。查詢結果如下所示。查詢結果的轉置

Accnt Country Weight 
Acct1 US 55 
Acct1 GB 45 
Acct2 GB 35 
Acct2 US 65 

輸出需要轉置如下。

Acct1 Acct2 
US 55 65 
GB 45 35 

我已經綁聲明塊,但此查詢將在點net框架內使用,他們不能使用聲明block.So請求專家們讓我知道可能的方式單一查詢要做到這一點,無論是最初和轉賬。賬戶將是動態的。

+1

http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html – jarlh

+0

搜索PIVOT – SriniV

回答

1

您可以使用PIVOT

select * 
from (select Accnt,country,weight from test) 
pivot (max(weight) for Accnt IN ('Acct1','Acct2')); 

COUNTRY 'Acct1' 'Acct2' 
US 55 65 
GB 45 35 
+0

感謝您的Query.How我們會修改查詢時ACCNT場動態menaing,我不知道mwany帳戶將如何 – Ram

+0

我不知道在PIVOT直接的方式,但通過使用PL/SQL,你可以實現這一點。 http://technology.amis.nl/2006/05/24/dynamic-sql-pivoting-stealing-antons-thunder/ – SriniV

1

PIVOT是你所需要的,但也有另一種選擇。

select Country, 
     max(case when Accnt = 'Acct1' then Weight end) Acct1, 
     max(case when Accnt = 'Acct2' then Weight end) Acct2 
from test 
group by Country; 
+0

謝謝。我們將如何查詢何時Accnt字段是動態的。當Accnt是常量時,我​​們可以使用查詢你的建議。 – Ram

+0

@Ram,在這種情況下,我建議創建一個創建並填充臨時表並返回其名稱的過程。另一種選擇是使用一些客戶端格式化工具以長格式(原樣)提取表格並使其變寬(根據需要)。無論您選擇哪種解決方案,請在此分享。謝謝 –