Sql 将行透视到未知数量的列中

Sql 将行透视到未知数量的列中,sql,oracle,pivot,Sql,Oracle,Pivot,我有权访问Oracle server。Oracle服务器上有一个名为Transactions的表,其中包含以下数据: 我不知道值的数量,所以我们需要在Oracle中实现动态sql。 我需要调整数据,以便得出以下结果: 有什么建议吗?您可以使用条件聚合: select subno, sum(case when offer = 'offer1' then 1 else 0 end) as offer1, sum(case when offer = 'offer2' the

我有权访问Oracle server。Oracle服务器上有一个名为Transactions的表,其中包含以下数据:

我不知道值的数量,所以我们需要在Oracle中实现动态sql。 我需要调整数据,以便得出以下结果:


有什么建议吗?

您可以使用条件聚合:

select subno,
       sum(case when offer = 'offer1' then 1 else 0 end) as offer1,
       sum(case when offer = 'offer2' then 1 else 0 end) as offer2,
       sum(case when offer = 'offer3' then 1 else 0 end) as offer3
from t
group by subno;

,不要在SQL中执行,而是在应用程序中执行。事实上,我有1000多个报价。因此,我需要为不同的情况添加相同数量的行。我们能处理吗?@Taie。是和否。Oracle对查询可以返回的列数有限制,因此您可能无法在Oracle中执行此操作。