过去已经很好地回答了这个问题(here和here)。看来,我仍然无法让我知道这个关键的东西(我也没有使用它很长一段时间)。如何在SQL Server 2008中透视数据以获得期望的结果?
所以希望有人(再次)能告诉我如何将数据放到所需的格式:
鉴于数据:
ID | Label | Occurences | RangeBegin | RangeEnd | Unit
---+-------+------------+------------+----------+--------
1 | One | 0 | -1000 | 0 | m
1 | One | 5 | 0 | 10 | m
1 | One | 8 | 10 | 20 | m
1 | One | 6 | 20 | 30 | m
1 | One | 15 | 30 | 40 | m
1 | One | 0 | 40 | 1000 | m
2 | One | 0 | -1000 | 0 | m
2 | One | 2 | 0 | 10 | m
2 | One | 13 | 10 | 20 | m
2 | One | 27 | 20 | 30 | m
2 | One | 5 | 30 | 40 | m
2 | One | 0 | 40 | 1000 | m
1 | Two | 0 | -1000 | 0 | kg
1 | Two | 4 | 0 | 2 | kg
1 | Two | 6 | 2 | 4 | kg
1 | Two | 1 | 4 | 6 | kg
1 | Two | 0 | 6 | 1000 | kg
2 | Two | 0 | -1000 | 0 | kg
2 | Two | 8 | 0 | 2 | kg
2 | Two | 1 | 2 | 4 | kg
2 | Two | 3 | 4 | 6 | kg
2 | Two | 0 | 6 | 1000 | kg
期望的结果:
ID | One | OneRangeBegin | OneRangeEnd | OneUnit | Two | TwoRangeBegin | TwoRangeEnd | TwoUnit
---+-----+---------------+-------------+---------+------+---------------+-------------+----------
1 | 0 | -1000 | 0 | m | 0 | -1000 | 0 | kg
1 | 5 | 0 | 10 | m | 4 | 0 | 2 | kg
1 | 8 | 10 | 20 | m | 6 | 2 | 4 | kg
1 | 6 | 20 | 30 | m | 1 | 4 | 6 | kg
1 | 15 | 30 | 40 | m | 0 | 6 | 1000 | kg
1 | 0 | 40 | 1000 | m | null | null | null | null
2 | 0 | -1000 | 0 | m | 0 | -1000 | 0 | kg
2 | 2 | 0 | 10 | m | 8 | 0 | 2 | kg
2 | 13 | 10 | 20 | m | 1 | 2 | 4 | kg
2 | 27 | 20 | 30 | m | 3 | 4 | 6 | kg
2 | 5 | 30 | 40 | m | 0 | 6 | 1000 | kg
2 | 0 | 40 | 1000 | m | null | null | null | null
而且为了使它的工作更容易一点,我把上面的数据放在SqlFiddle。
两个表你需要看看逆转置和支点。你有没有尝试过任何代码来获得解决方案? – Taryn
发布您的查询尝试,并发现它出了什么问题。错误或意外结果? –