拜EXCEL所賜,現在做報表很多需求都是使用者從原來EXCEL表單轉換而來~
一般而言,如果我們有Group by需求的報表,絕大部分都是看彙總後的資料,像是AVG、SUM、COUNT…等等
或者使用者想看類似樞紐分析表資料長相的時候,SQL SERVER 2005 提供 PIVOT也能幫得上忙。
( 基本上要不是走入IT這行,我覺得EXCEL用的好,很多報表可以不用做的那麼辛苦 !!)
Anyway 在使用者最大情況下,IT小小工程師也只能儘量滿足需求。
某天在廠區工作的時候,就遇到這種情況,使用者想要的報表長相如下:
而實際在資料庫內的資料呈現則是如下圖:
一般來說,我們針對這種資料,都會使用矩陣來呈現報表,如下圖:
透過Reporting Service來製作矩陣報表,真的非常容易,但要呈現使用者需要的樣子,就得在SQL上面偷偷下工夫了。
拜古哥幫忙,剛好找到如下討論串
參考網址:http://social.msdn.microsoft.com/Forums/en/transactsql/thread/f09d4166-2030-41fe-b86e-392fbc94db53
那麼就照網址內容依樣畫葫蘆,首先來建立TABLE吧
步驟1:
CREATE TABLE [dbo].[DAPON_TB](
[CITY] [nvarchar](50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL,
[PRODUCT] [nvarchar](50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL,
[STORE] [nvarchar](50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL
) ON [PRIMARY]
步驟2:在Reporting Service內新增一張報表,並且新增資料集,SQL語法則如下
SELECT G.CITY,G.PRODUCT,
STUFF
(
(
SELECT CAST(':' AS VARCHAR(MAX))+U.STORE
FROM DAPON_TB AS U
WHERE U.PRODUCT=G.PRODUCT
FOR XML PATH('')
)
,1
,1
,''
) AS STORES,G.STORE
FROM DAPON_TB AS G
步驟3:如果資料集SQL沒下錯,就會像下圖一樣。
步驟4:請在工具箱拉一個矩陣到配置視窗上,並依照下圖方式將欄位資料放上
步驟5:完成後點預覽,即可看到結果,如下
結論:整個重點還是在如何把資料轉成如下圖長相,參考一下步驟2的SQL語法吧!
沒有留言:
張貼留言