2017-03-29 6 views
0

Hallo für meine ssrs Bericht ich verwende eine Matrix, um Daten Zeile als eine zweispaltige Liste anzuzeigen und Ich verwende den folgenden Ausdruck, um die Zeile zu gruppieren;SSRS Bericht Spaltenliste Sortierreihenfolge

= ceiling (RowNumber (nichts)/2) und

der folgende Ausdruck Spalte zu gruppieren;

= Decke (rownumber (nichts) mod 2)

ähnlich wie https://www.experts-exchange.com/articles/12331/Simple-way-to-show-multi-column-data-in-SSRS-Horizontally-or-Vertically.html

es funktioniert jedoch korrekt würde ich Ergebnisse wie statt horizontal gehen vertikal alphabetisch sortiert werden angezeigt.

Wie.

Record a Record d 

Record b Record e 

Record c Record f 

Statt

Record a Record b 

Record c Record d 

Record e Record f 

ich habe, um von meiner SQL-Abfrage

irgendwelche Vorschläge, wie dies zu erreichen?

+0

Haben Sie versucht, die Ausdrücke von Zeile und Spalte zu wechseln? – Anand

+0

Sie können ein mehrspaltiges Layout verwenden. Wechseln Sie zu den Berichtseigenschaften und legen Sie die Spalten fest = 2. Dadurch erhalten Sie eine Ausgabe von oben nach unten/von links nach rechts, solange Ihre Breite wie folgt bleibt: -> Anzahl der Spalten * Spaltenbreite

+0

Haben versucht, sie umzuschalten, zeigen sie stattdessen nur zwei Zeilen und mehrere Spalten an. @Anand – KCodeR

Antwort

0

Sie können Ihre SQL für diese ändern. Der folgende Hack könnte verwendet werden, wenn Sie nicht mehrere Spalten verwenden möchten.

DECLARE @T TABLE 
(
    TableID INT, 
    Value1 NVARCHAR(20), 
    ShouldBe INT 
) 

    INSERT INTO @T (TableID,Value1,ShouldBe) 
    VALUES 
    (1,'A',1), 
    (2,'B',3), 
    (3,'C',5), 
    (4,'D',2), 
    (5,'E',4), 
    (6,'F',6), 

    (7,'A',1), 
    (8,'B',3), 
    (9,'C',5), 
    (10,'D',2), 
    (11,'E',4), 
    (12,'F',6), 

    (13,'A',1) 



    DECLARE @NumberOfRowsPerPage INT = 3 
    DECLARE @NumberOfColumns INT = 2 

    SELECT PageNumber,Value1 
    FROM 
    (
     SELECT ColumnOrder=ROW_NUMBER() OVER(PARTITION BY PageNumber,ColumnTile ORDER BY TableID),* 
     FROM 
     (
      SELECT ColumnTile=NTILE(@NumberOfColumns) OVER(PARTITION BY PageNumber ORDER BY TableID),* 
      FROM 
      (
       SELECT PageNumber=((DataRowNumber -1)/(@NumberOfRowsPerPage * @NumberOfColumns)) + 1, * 
       FROM 
       (
        SELECT DataRowNumber=ROW_NUMBER() OVER(ORDER BY TableID) ,* 
        FROM @T 
       )AS A 
      )AS B 
     )AS C 
    )AS D 
    ORDER BY 
     PageNumber,ColumnOrder,DataRowNumber 

Die Abfrage wird die folgende Ausgabe auf dem RowsPerPage und NumberOfColumns Basis produzieren.

Page Value 
1 A 
1 D 
1 B 
1 E 
1 C 
1 F 
2 A 
2 D 
2 B 
2 E 
2 C 
2 F 
3 A