我有以下难题要解决(确切的紧急业务分配) SQL SERVER 2008
我有一张这种表格的表格
ID Market SubMarket Value
1 1 1 3
2 1 2 6
3 1 3 2
4 2 23 1
5 2 24 9
我有特定的MarketIDs,每个MarketID都有特定的SubMarketIDs(最多5个 - 我知道每个都可以) 例如,MarketID 1具有SubMarketID 1,2,3 MarketID 2有SubMarketIDs 23,24等 每个SubMarketID都有一个变量值
我必须在这种类型的固定表中转换我的数据
MarketID SubMarketAvalue SubMarketBValue SubMarketCValue....SubMarketEValue
1 3 6 2 null
2 1 9 null null
SubMarketAValue必须包含较小的SubMarketID
的值SubMarketBValue必须包含下一个更大的SubMarketID
的值答案 0 :(得分:2)
您没有指定RDBMS,但您可以在SQL Server 2005 +,Oracle和PostgreSQL中使用以下内容:
select market,
max(case when rn = 1 then value end) as SubMarketAvalue,
max(case when rn = 2 then value end) as SubMarketBvalue,
max(case when rn = 3 then value end) as SubMarketCvalue,
max(case when rn = 4 then value end) as SubMarketDvalue,
max(case when rn = 5 then value end) as SubMarketEvalue
from
(
select id, market, submarket, value,
row_number() over(partition by market
order by market, submarket) rn
from yourtable
) x
group by market