sql - 不聚合的枢轴列出所有非字符内容
问题描述
我有
抗体 | 光盘 |
---|---|
1 | 一个 |
2 | b |
3 | b |
8 | C |
我想
一个 | b | C |
---|---|---|
1 | 2 | 8 |
无效的 | 3 | 无效的 |
我试过了
select a, b, c
from aib
pivot
(
max(ab)
for cd in (a,b,c)
) k
但我无法列出所有值,因为聚合函数是枢轴函数的必需品
解决方案
你需要一些东西来区分你的结果行,行号似乎可以解决问题。
declare @aib table (ab int, cd varchar(1));
insert into @aib (ab, cd)
values
(1,'a'),
(2,'b'),
(3,'b'),
(8,'c');
with cte as (
select *
, row_number() over (partition by cd order by ab) rn
from @aib
)
select a, b, c --, rn
from cte
pivot (
max(ab) for cd in (a,b,c)
) k;
注意:如果您将示例数据的 DDL+DML 添加到未来的问题中,则更容易提供帮助。
推荐阅读
- android - 如何修复 Android 中的 Kodein Force 关闭错误
- c++ - 我可以在不编写自定义特征类的情况下对类型进行模式匹配吗?
- python - 无法在 Flask 应用程序上保存和读取文件
- python - Python - 检查列表中的字符串/首字母是否存在于另一个列表中
- postgresql - 用于在 Google Cloud SQL 中查看数据的 GUI
- javascript - 在下拉框中按选定月份过滤表
- haskell - 不同种类的ReaderT?
- django - Django ModelForm 是否正确使用
- laravel - Laravel:加密上传的文件/图像
- nginx - Nginx 子目录 404