2015-11-03 43 views
0

更新: 我已经添加了一些说明,更新了图像大致如何在SSRS &中显示最终报告,修复了DDL中的错误。查询帮助:按没有聚合和列数的分组未知

我有能力生产基于一个数据集的SSRS报告的要求。我不知道通过SSRS是否可以实现这种灵活性水平,但是想要与SSRS社区中的其他人一起检查。

我想知道要做到这一点的最好办法。 我有一个数据集和最终报告应该如何上传。

基本上,对于每个位置存在一个TrainingLot /组&多个位置。 每个地段可以有一个或多个位置,直到无限大,但是如果SSRS中无法使用无限大,那么现在就让其上限为4。

任何人都可以建议去在image.Note IVE所示的结果集的最好方式在Excel格式这很好,但位置可以在每一行重复。

感谢您提供的任何帮助。

create table #posts 
(
    Location varchar(20) 
    ,TrainingLot varchar(20) 
    ,TrainingPost varchar(20) 
) 

insert into #posts(Location,TrainingLot,TrainingPost) 
values 
('Lisbon', 'A111', 'foreground manager') 
,('Lisbon', 'A111', 'aft manager') 
,('Lisbon', 'A111', 'foreground surveyor') 
,('Lisbon', 'A111', 'gate keeper') 
,('Lisbon', 'A112', 'foreground manager') 
,('Lisbon', 'A112', 'aft manager') 
,('Lisbon', 'A112', 'foreground surveyor') 
,('Lisbon', 'A112', 'gate keeper') 
,('Dublin', 'B7777', 'cleaner') 
,('Dublin', 'B7777', 'cleaner supervisor') 
,('Dublin', 'D8876', 'cleaner') 
,('New York', 'V8877', 'foreground manager') 
,('New York', 'V8877', 'aft manager') 
,('New York', 'V8877', 'stock room manager') 
,('New York', 'V8877', 'cleaner') 
,('New York', 'V8878', 'director of inspections') 
,('London', 'A119', 'foreground manager') 
,('London', 'A119', 'aft manager') 
,('London', 'A119', 'foreground surveyor') 
,('London', 'A115', 'gate keeper') 
,('London', 'A115', 'Repair person') 

enter image description here

+0

谷歌'SQL动态枢纽example'的 –

+1

可能的复制(http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-查询) –

+0

@TabAlleman问题是每个位置的列名是不同的,你如何解决这个问题? –

回答

2

您可以使用:您提供的

WITH cte AS 
(
SELECT *, 
rn = ROW_NUMBER() OVER(PARTITION BY Location,TrainingLot ORDER BY (SELECT 1)) 
FROM #posts 
) 
SELECT 
    Location, 
    TrainingLot, 
    TrainingPost1 = MAX(CASE WHEN rn=1 THEN TrainingPost END), 
    TrainingPost2 = MAX(CASE WHEN rn=2 THEN TrainingPost END), 
    TrainingPost3 = MAX(CASE WHEN rn=3 THEN TrainingPost END), 
    TrainingPost4 = MAX(CASE WHEN rn=4 THEN TrainingPost END) 
    -- up to 50 
FROM cte 
GROUP BY 
Location, 
    TrainingLot 
ORDER BY Location, 
    TrainingLot 

LiveDemo

注样本数据与您需要的报告不同的一点。例如:?SQL Server的动态PIVOT查询]

('London', 'C6543', 'Storefront manager')