2015-11-03 38 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')