sql - SELECT 返回重复的不同列值
问题描述
绑定查询可以根据其他列中的值复制某些列值。ID1 列总是有一个值,ID2 和 ID3 可能有也可能没有。表中的数据如下所示。
RefNum DetailDesc ID1 ID2 ID3 HRs
43 Test detail 1. 110011 220022 330033 1.5
43 Test detail 2. 110011 220022 330033 0.75
43 Test detail 3. 110011 220022 NULL 1.25
43 Test detail 4. 110011 220022 NULL 1.5
43 Test detail 5. 110011 NULL NULL 0.5
43 Test detail 6. 110011 NULL NULL 2
想要查询此表以显示这样的结果集
RefNum IDOrder ID DetailDesc HRs
43 1 110011 Test detail 1. 1.5
43 2 220022 Test detail 1. 1.5
43 3 330033 Test detail 1. 1.5
43 1 110011 Test detail 2. 0.75
43 2 220022 Test detail 2. 0.75
43 3 330033 Test detail 2. 0.75
43 1 110011 Test detail 3. 1.25
43 2 220022 Test detail 3. 1.25
43 1 110011 Test detail 4. 1.5
43 2 220022 Test detail 4. 1.5
43 1 110011 Test detail 5. 0.5
43 1 110011 Test detail 6. 2
一直在尝试这个尝试案例选择,并插入到临时表中。我卡住了。
解决方案
您可以使用cross apply
unpivot 数据:
select t.RefNum, v.IDOrder, v.ID, t.DetailDesc, t.HRs
from t cross apply
(values (1, t.id1), (2, t.id2), (3, t.id3)
) v(idorder, id)
where v.id is not null;
推荐阅读
- hyperledger-fabric - Fabric-CA-Server,使用密码验证用户
- ios - 获取:“在演示或关闭过程中尝试从视图控制器中关闭”
- http - 如何查找页面重定向到的 URL
- java - 转换字符串中间的 ASCII 值
- macos - Goland 在调试时不接受标准输入
- javascript - VueJS / JS DOM Watch / Observer 多阶段渲染场景
- image - 带有图像数据生成器的keras中的单层网络,但损失总是负数
- javascript - 使用javascript将文本从div复制到剪贴板
- c - strlen 没有返回正确的字符数
- python - 使用 sqlite3 python 进行条件查询