我們有一個需要轉置查詢結果的需求。查詢結果如下所示。查詢結果的轉置
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請求專家們讓我知道可能的方式單一查詢要做到這一點,無論是最初和轉賬。賬戶將是動態的。
我們有一個需要轉置查詢結果的需求。查詢結果如下所示。查詢結果的轉置
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請求專家們讓我知道可能的方式單一查詢要做到這一點,無論是最初和轉賬。賬戶將是動態的。
您可以使用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
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;
謝謝。我們將如何查詢何時Accnt字段是動態的。當Accnt是常量時,我們可以使用查詢你的建議。 – Ram
@Ram,在這種情況下,我建議創建一個創建並填充臨時表並返回其名稱的過程。另一種選擇是使用一些客戶端格式化工具以長格式(原樣)提取表格並使其變寬(根據需要)。無論您選擇哪種解決方案,請在此分享。謝謝 –
http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html – jarlh
搜索PIVOT – SriniV