3

我正在尝试将多行合并为一列。我有一张桌子:

COST_ID PRICE_ID PRICE_TIER   COST
1        4         1        850.00
2        4         2        950.00 
3        4         3        1000.00
4        7         1        250.00
5        7         2        275.00
6        7         3        300.00

我想为每个 price_id 输出一行,它应该看起来像这样:

ID PriceID C1ID C1Cost   C2ID  C2Cost C3ID  C3Cost
1    4      1    850.00    2   950.00   3    1000.00
2    7      4    250.00    5   275.00   6    300.00

谢谢您的帮助。

4

3 回答 3

2
于 2012-05-21T13:43:29.820 回答
0

如果 PRICE_ID 和 PRICE_TIER 形成一个唯一键,你可以这样做:

select
      row_number() over (order by PRICE_ID) as ID
    , PRICE_ID as PriceID
    , (select COST_ID from cte where PRICE_ID = t.PRICE_ID and PRICE_TIER = 1) as C1ID
    , (select COST from cte where PRICE_ID = t.PRICE_ID and PRICE_TIER = 1) as C1Cost
    , (select COST_ID from cte where PRICE_ID = t.PRICE_ID and PRICE_TIER = 2) as C2ID
    , (select COST from cte where PRICE_ID = t.PRICE_ID and PRICE_TIER = 2) as C2Cost
    , (select COST_ID from cte where PRICE_ID = t.PRICE_ID and PRICE_TIER = 3) as C3ID
    , (select COST from cte where PRICE_ID = t.PRICE_ID and PRICE_TIER = 3) as C3Cost
from MY_TABLE t
group by PRICE_ID
order by PRICE_ID
于 2012-05-21T13:37:13.653 回答
0

SQL Server 有数据透视表,Pinal Dave通常会很好地介绍 SQL Server 的东西——至少它是一个开始的地方。

于 2012-05-21T13:25:30.507 回答