2017-05-02 107 views
1

我有一個表,格式如下:創建水平列

Staff  Client Problems Status 
    1  101  a  1 
    1  101  b  0 
    1  101  e  1 
    2  102  g  0 
    2  102  k  1 

我需要創建基於它的報表和格式波紋管。

Staff  Client Problem1 Status Problem2 Status Problem3 Status..... 
1   101   a  1   b  0  e  1 
2   102   g  0   k  1 

更新:

隨着SqlZim的幫助下,我得到如下結果:

Staff  Client  Category Problems Status 
     1  101 Problem1 a  1 
     1  101 Problem2 b  0 
     1  101 Problem3 e  1 
     2  102 Problem1 g  0 
     2  102 Problem2 k  1 

我創建了一個矩陣SSRS報告,並設立類別爲列組和客戶端的行組和問題作爲價值。

我得到了一個錯誤。

你能幫我嗎?謝謝!

+0

寧可讓報告處理列,如果你正在使用'rdl'當時只考慮列分組 – Stephen

+0

我想我還需要創建類的名字,如問題1,Problem2, ......但是,我無法得到正確的類別名稱。 – Ice

回答

2

在SQL Server:

您可以使用row_number()進行編號行,並連接 '問題'

select 
    Staff 
    , Client 
    , 'Problem'+convert(varchar(10), 
     row_number() over (partition by Staff, Client order by Problems) 
    ) as Category 
    , Problems 
    , Status 
from t 

在SQL Server 2012+可以使用concat()來連接,而不必值顯式轉換row_number()varchar()

select 
    Staff 
    , Client 
    , concat('Problem', 
     row_number() over (partition by Staff, Client order by Problems) 
    ) as Category 
    , Problems 
    , Status 
from t 

rextester演示:http://rextester.com/ULH84019

回報:

+-------+--------+----------+----------+--------+ 
| Staff | Client | Category | Problems | Status | 
+-------+--------+----------+----------+--------+ 
|  1 | 101 | Problem1 | a  |  1 | 
|  1 | 101 | Problem2 | b  |  0 | 
|  1 | 101 | Problem3 | e  |  1 | 
|  2 | 102 | Problem1 | g  |  0 | 
|  2 | 102 | Problem2 | k  |  1 | 
+-------+--------+----------+----------+--------+ 
+0

謝謝,SqlZim! – Ice

+0

@Ice樂於幫助! – SqlZim