我有下表
+-----+-------+------+---------+
| ID | NAME | SORT | AMOUNT |
+-----+-------+------+---------+
| 1 | sak | A | 200 |
| 2 | mods | b | 200 |
| 3 | wef | c | 200 |
| 4 | sak | b | 300 |
| 5 | mods | a | 210 |
+-----+-------+------+---------+
我写了下面的代码
SELECT ID,A, B, C
FROM
(
Select ID,SORT,
'SORT'+
cast(row_number() over(partition by ID order by ID)
as varchar(10)) Col
from TABLE
) Temp
pivot
(
max (SORT)
for Col in ( A, B, C )
)piv
我得到了这个结果:
+----+------+------+------+
| ID | A | B | C |
+----+------+------+------+
| 1 | NULL | NULL | NULL |
| 2 | NULL | NULL | NULL |
| 3 | NULL | NULL | NULL |
| 4 | NULL | NULL | NULL |
| 5 | NULL | NULL | NULL |
+----+------+------+------+
但是需要以这种方式显示表,但我得到的是NULL而不是金额。
3条答案
按热度按时间pqwbnv8z1#
我知道您希望每个
sak
有一条记录,其中a
、b
和c
的amount
在列中。下面是一个跨数据库解决方案,它使用条件聚合将数据集透视到一个 * 固定 * 的列列表上:
6qqygrtg2#
您也可以尝试以下操作:
1.根据你的结构
1.预期
qkf9rpyu3#