【发布时间】:2016-11-06 05:38:18
【问题描述】:
如果可以“填充”主表中未包含的数据,我正在考虑使用 Pivot 功能。 我的表格包括这些数据:
create table tmpData (objID INT, colID varchar(5), value varchar(50));
insert into tmpData (objId, colId, value) values(21, 'col1', 'a value');
insert into tmpData (objId, colId, value) values(21, 'col2', 'col2_1');
insert into tmpData (objId, colId, value) values(21, 'col2', 'col2_2_x'); -- a second 'value' for col_2
insert into tmpData (objId, colId, value) values(21, 'col3', 'col3_1');
insert into tmpData (objId, colId, value) values(22, 'col1', 'another value');
insert into tmpData (objId, colId, value) values(22, 'col2', 'col2_2');
insert into tmpData (objId, colId, value) values(22, 'col3', 'col3_2');
使用枢轴功能
select
*
from (
select
objID
, colID
, value
from tmpData)
t
PIVOT (MAX(value) for colID in ([col1], [col2], [col3])) pivottable;
我在 col2 中只得到一个 objID=21 的(最大值)值:
objID col1 col2 col3
21 a value col2_2_x col3_1
22 another value col2_2 col3_2
我想得到的是所有值并填充 col1 和 col3 中 objID=21 的非给定数据:
objID col1 col2 col3
21 a value col2_2 col3_1
21 a value col2_2_x col3_1
22 another value col2_2 col3_2
这可以通过 Pivot 功能还是以其他方式实现? 提前谢谢了 约尔格
【问题讨论】:
-
您使用的是哪个 DBMS?语法类似于 SQL Server。
-
最后必须适用于 SQL Server 和 ORACLE
标签: sql sql-server tsql pivot aggregate