在这种情况下使用SQL Pivot?
我正在努力做到这一点在这种情况下使用SQL Pivot?,sql,sql-server,pivot,Sql,Sql Server,Pivot,我正在努力做到这一点 DATE Insurance Type Billed Rate 2/28/2011 0:00 BC/BS INP B 0.6383 2/28/2011 0:00 BC/BS OUT B 0.5216 2/28/2011 0:00 BC/BS INP U 0.1988 2/28/2011 0:00 BC/BS OUT U
DATE Insurance Type Billed Rate
2/28/2011 0:00 BC/BS INP B 0.6383
2/28/2011 0:00 BC/BS OUT B 0.5216
2/28/2011 0:00 BC/BS INP U 0.1988
2/28/2011 0:00 BC/BS OUT U 0.3493
3/31/2011 0:00 BC/BS INP B 0.69
3/31/2011 0:00 BC/BS OUT B 0.6136
3/31/2011 0:00 BC/BS INP U 0.1877
3/31/2011 0:00 BC/BS OUT U 0.3567
像这样
Insurance Type Billed 2/28/2011 0:00 3/31/2011 0:00
BC/BS INP B 0.6383 0.69
BC/BS OUT B 0.5216 0.6136
BC/BS INP U 0.1988 0.1877
BC/BS OUT U 0.3493 0.3567
因此,日期字段行数据最终成为每个不同值的列标题。我想我可以利用PIVOT语句,但我看到的所有示例似乎都很简单
提前感谢。如果轴列(您的日期)已知,则您可以使用轴操作符获取结果:
declare @t table (date datetime, Insurance varchar(10), Type char(3), Billed char(1), Rate decimal(10,4));
insert into @t
values ('2/28/2011 0:00', 'BC/BS', 'INP', 'B', '0.6383'),
('2/28/2011 0:00', 'BC/BS', 'OUT', 'B', '0.5216'),
('2/28/2011 0:00', 'BC/BS', 'INP', 'U', '0.1988'),
('2/28/2011 0:00', 'BC/BS', 'OUT', 'U', '0.3493'),
('3/31/2011 0:00', 'BC/BS', 'INP', 'B', '0.69'),
('3/31/2011 0:00', 'BC/BS', 'OUT', 'B', '0.6136'),
('3/31/2011 0:00', 'BC/BS', 'INP', 'U', '0.1877'),
('3/31/2011 0:00', 'BC/BS', 'OUT', 'U', '0.3567')
select *
from ( select [date] as pivot_col,
Insurance,
[Type],
Billed,
Rate
from @t
) as d
pivot ( sum(Rate) for pivot_col in ([2/28/2011],[3/31/2011])
) as p;
很可能你不知道这些值,如果是这样的话,你需要使用相同的技术,但要以动态的方式进行研究。一个很好的例子是根据您提供的示例数据,我猜您将有一个很长的日期列表,需要将其转换为列。虽然您可以像其他答案一样使用静态轴心,但也可以使用类似于以下内容的动态轴心:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(convert(char(10), date, 101))
from test
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query
= 'SELECT Insurance, [Type], Billed,' + @cols + ' from
(
SELECT [date],
Insurance,
[Type],
Billed,
Rate
FROM test
) x
pivot
(
sum(Rate)
for [date] in (' + @cols + ')
) p
order by billed'
execute(@query)
看