sql-server - SQL Server:多行的单行输出
问题描述
你能指导我满足以下要求吗?
数据:
C_ID A_ID A_VAL UPDATE_DATE
------------------------------------------------
83181064 BDAY 2004 2021-08-26
83181064 ANNIV 2021-08-23
83181064 EXPR 2006 2021-08-23
预期输出:
C_ID A_ID_B A_VAL_B UPDATE_DATE_B A_ID_N A_VAL_N UPDATE_DATE_N A_ID_M A_VAL_M UPDATE_DATE_M
83181064 BDAY 2004 2021-08-26 ANNIV 2021-08-23 EXPR 2006 2021-08-23
解决方案
您可以使用表的多重连接,如下所示:声明表及其值
declare @t table(C_ID int, A_ID varchar(200), A_VAL varchar(200),UPDATE_DATE date);
insert into @t(C_ID, A_ID, A_VAL,UPDATE_DATE)
values
(83181064, 'BDAY', 2004,'2021-08-26'),
(83181064, 'ANNIV',null,'2021-08-23'),
(83181064,'EXPR', 2006,'2021-08-23')
表与自身的多重连接;
SELECT B.[C_ID],
B.A_ID AS A_ID_B,B.A_VAL AS A_VAL_B,B.UPDATE_DATE AS UPDATE_DATE_B,
N.A_ID AS A_ID_N,N.A_VAL AS A_VAL_N,N.UPDATE_DATE AS UPDATE_DATE_N,
M.A_ID AS A_ID_M,M.A_VAL AS A_VAL_M,M.UPDATE_DATE AS UPDATE_DATE_M
FROM @t B
INNER join @t N
on B.C_ID=N.C_ID
INNER join @t M
on B.C_ID=M.C_ID
WHERE B.A_ID='BDAY' AND N.A_ID='ANNIV' AND M.A_ID='EXPR'
推荐阅读
- webots - 在 Webots R2019a 上添加主管节点
- c++ - C++ 中的无范围枚举、枚举器和基础类型歧义
- r - 将 data.table 转换为 dplyr:在 dplyr 上合并之前是否有相当于设置数据表键的东西?
- c# - C#没有这样的主机是已知的
- c++ - 使用 TBB 在向量中运行函数会产生不正确的输出
- c# - Xamarin.forms 中的相机宽度和大小
- django - 在 Python 中实现 Freshsales API
- python - 在 google-colaboratory 中导入数据以进行快速计算和训练的最佳方式?
- dialogflow-es - Dialogflow - 如何在 slotfilling 中找到参数名称?
- java - 按下箭头键时如何使精灵移动一次?