2017-03-29 113 views
0

嗨,我的ssrs報告我正在使用矩陣來顯示數據行作爲兩列列表和 我正在使用以下表達式爲了組行;SSRS報告列表排序順序

=天花板(ROWNUMBER(無)/ 2) 和

以下表達式組柱;

=天花板(ROWNUMBER(無)模2)

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

其正常工作但是我想的結果是顯示按字母順序去垂直的而不是水平的。

贊。

Record a Record d 

Record b Record e 

Record c Record f 

而不是

Record a Record b 

Record c Record d 

Record e Record f 

我有爲了在我的SQL查詢

就如何實現這一目標有什麼建議?

+0

您是否嘗試過切換行和列的表達式? – Anand

+0

您可以使用多列布局。轉到報告屬性並設置列= 2。只要您的寬度保持爲 - >列數*列寬<頁寬,這將爲您提供上下/左右類型的輸出。它適用於大多數情況。但是,分組和頁面溢出可能會導致悲傷。 –

+0

已經嘗試切換它們,只是顯示爲兩行和多列。 @Anand – KCodeR

回答

0

你可以修改你的sql。如果您不想使用多列,可以使用下面的黑客技巧。

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 

該查詢將基於RowsPerPage和NumberOfColumns產生以下輸出。

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