當我把它放在一起時,我沒有看到最後一列,但它會很容易添加。
我已經創建了兩個表格,一個是關聯十六進制顏色的產品,另一個是包含一些樣品標準化數據的產品。
最後有一個查詢將它們放在一起。我建議一旦你有這個運行,你編輯查詢,使其動態,所以你不需要硬編碼的價值,但它應該讓你對我採取的方法的想法。
DECLARE @prod TABLE (ProductID int, Productname varchar(50), HexColor varchar(7))
INSERT INTO @prod
VALUES
(1, 'Bikes', '#FF0000'),
(2, 'Cars', '#00FF00'),
(3, 'Vans', '#0000FF')
DECLARE @t TABLE (ProductID int, PeriodID int, Amount int)
INSERT INTO @t
VALUES
(1, 2014, 10),
(1, 2015, 12),
(1, 2016, 14),
(2, 2014, 12),
(2, 2015, 9),
(2, 2016, 8),
(3, 2014, 11),
(3, 2015, 16),
(3, 2016, 4)
SELECT ' Name' as ColName, p.ProductName, 0 as Amount, ROW_NUMBER() OVER(ORDER BY t.ProductID) AS RankID , HexColor
FROM (SELECT DISTINCT ProductID FROM @t)t
join @prod p on t.productid = p.productid
UNION ALL
SELECT '2014' as ColName, p.ProductName ,amount, ROW_NUMBER() OVER(ORDER BY Amount) AS RankID , HexColor
FROM @t t
join @prod p on t.productid = p.productid
where periodID = 2014
UNION ALL
SELECT '2015' as ColName, p.ProductName, amount, ROW_NUMBER() OVER(ORDER BY Amount) AS RankID , HexColor
FROM @t t
join @prod p on t.productid = p.productid
where periodID = 2015
UNION ALL
SELECT '2016' as ColName, p.ProductName, amount, ROW_NUMBER() OVER(ORDER BY Amount) AS RankID , HexColor
FROM @t t
join @prod p on t.productid = p.productid
where periodID = 2016
如果您使用此作爲SSRS數據集中,那麼你可以添加一個簡單的矩陣如下
該行小組RankID
完成,列組是在ColName
完成。
然後,我們需要一個表達式來選擇顯示Productname
還是amount
的總和。表達式看起來像這樣。
=IIF(Fields!ColName.Value=" Name", Fields!ProductName.Value, Sum(Fields!Amount.Value))
最後,同一單元格的BackgroundColor屬性也是一個表達式,如下所示。
=Fields!HexColor.Value
如果您願意,您可以從矩陣(但不是組)中刪除RankID列,但爲了清晰起見,我已將其留在此處。最終的輸出看起來像這樣。
如果我沒有錯,您正在嘗試每年的產品排名。我認爲這種方法會讓人難以理解數據。也許使用圖表將會是更好的選擇 – niktrs
顏色問題的一個長期良好的解決方案是將顏色記錄中的值存儲在數據庫中。這樣,當添加新產品時,可以選擇顏色。你能改變數據庫/應用程序嗎? –
@niktrs是的產品排名是應該達到的產出。我考慮使用例如折線圖,但需求以表格形式指定可視化。 – DummerTroll