2015-03-25 68 views
0

我有一個表,像下面的存儲數據:SQL Server 2008中:CASE WHEN自動遞增/組數據

MonthOpened | MONTH | Collected 
-------------------------------- 
01/05/2012 | 1 | £10.00 
01/05/2012 | 2 | £30.00 
01/05/2012 | 3 | £30.00 
01/05/2012 | 4 | £30.00 
01/05/2012 | 5 | £30.00 
01/05/2012 | 6 | £10.00 
01/05/2012 | 7 | £30.00 
01/05/2012 | 8 | £50.00 
01/05/2012 | 9 | £10.00 
01/05/2012 | 10 | £50.00 
01/05/2012 | 11 | £100.00 
01/05/2012 | 12 | £141.92 
01/05/2012 | 13 | £100.00 
01/05/2012 | 14 | £50.00 

月開業的日期在那裏取出賬戶,每月爲他們支付的月(月1是帳戶開立的月份(5月),月份2月份爲6月份,月份3月份爲7月份等等。此時此過程一直持續到月份36.

僅供參考此數據進入SSRS矩陣並且看起來像這樣

MONTH  |1  |2  |  3|  4|  5|  6|  7|  8|  9| 10|  11|  12|  13| 14 
---------------------------------------------------------------------------------------------------------------- 
01/05/2012|£10.00|£30.00|£30.00|£30.00|£30.00|£10.00|£30.00|£50.00|£10.00|£50.00|£100.00|£141.92|£100.00|£50.00 

我被要求在12個月後將它們組合在一起,因此1-12出現,然後18,24,30,36等等。我做一個通用的情況下,當

CASE 
    WHEN ISNULL(sp.Month, N'01') BETWEEN 01 AND 12 
     THEN ISNULL(sp.Month, N'01') 
    WHEN ISNULL(sp.Month, N'01') BETWEEN 13 AND 18 
     THEN 18 
    WHEN ISNULL(sp.Month, N'01') BETWEEN 19 AND 24 
     THEN 24 
    WHEN ISNULL(sp.Month, N'01') BETWEEN 25 AND 30 
     THEN 30 
    WHEN ISNULL(sp.Month, N'01') BETWEEN 31 AND 36 
     THEN 36 
    ELSE '' 
END AS MONTH 

但是我需要得到它,使它的汽車企業集團,這樣只有在賬戶未來幾個月(42,48,54,60這樣做是速戰速決。 ...),但我需要能夠在SSRS查詢窗口中執行此操作,並且無法找到使其工作的方法。

回答

0

如果您需要按每12個分組進行分組,然後做一個整數除以12的月份除以1,會給您它們所屬的間隔。
然後,您可以按該間隔進行分組。

例如:
第1個月將(1-1)/12 = 0,這將是您的第一間隔
第2個月將(2-1)/12 = 0儘管如此第一間隔
月13將(13 - 1)/12 = 1秒間隔的開始
月36將(36 -1)/12 = 2第三區間的開始

等等等等?這樣你就不必無限期地處理了。

+0

@ allan-s-hansen我需要能夠自己顯示前12個月,然後在12個月後每6個組合一次 – GPH 2015-03-25 08:06:17

+0

如果間隔時間僅爲6個月,則可以使用6得到間隔數字。如果你想省略前12個(2個間隔),那就用一個案例來做。但是做這個分區,所以你可以通過編程來獲得間隔時間,這可以幫助你簡化查詢 – 2015-03-25 08:07:37