查询结果的转置

时间:2017-09-13 12:21:23

标签: sql oracle pivot

我们需要转置查询结果。查询结果如下所示。

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

输出需要转换如下。

    Acct1   Acct2
US  55  65
GB  45  35

我绑定了declare block,但是这个查询将在Dot net框架中使用,他们无法使用declare block.So请求专家让我知道在单个查询中执行此操作的可能方法,包括初始和转置。将是动态的。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;