2012-05-22 24 views
3

我開始看起來像這樣的數據:桶裝數據2008

+----------+------------------+--------+ 
| specimen |  date  | bucket | 
+----------+------------------+--------+ 
| 31598D | 3/3/2010 11:38 |  10 | 
| A113899 | 2/10/2010 13:50 |  11 | 
| A121375 | 12/17/2010 10:06 |  2 | 
| A122115 | 6/14/2010 9:33 |  10 | 
| A122119 | 5/19/2010 10:08 |  3 | 
| A122124 | 6/30/2010 11:43 |  4 | 
| DD58834 | 6/17/2010 10:08 |  1 | 
| 31598A | 3/3/2010 11:36 |  10 | 
+----------+------------------+--------+ 

我想知道是否有可能將其轉化爲這樣的頻率分佈:

enter image description here

我會在SQL Server中使用pivot函數嗎?如果是這樣,怎麼樣?

請注意,我確實有權訪問SSRS,並可以將其用作解決此挑戰的資源。

非常感謝你的指導和時間

+0

@marc_s可以請你這個室內用http://stackoverflow.com/questions/10711220/outputting-full-sequential-range-of-values –

回答

1

這是未經測試,因爲我沒有一個SQL Server實例很方便,但它應該說明的想法;你可以SUM()通過case語句來生成你想要的分佈。

SELECT 
     [bucket] 
    , SUM(CASE WHEN DATEPART(MONTH,[date]) = 1 THEN 1 ELSE 0 END) AS [Jan] 
    -- repeat the above for each month 
FROM 
    [your_table] 
GROUP BY 
    [bucket] 
ORDER BY 
    [bucket] DESC 
+0

爲什麼不只是樞軸? – vittore

+0

可以請你幫忙這個http://stackoverflow.com/questions/10711220/outputting-full-sequential-range-of-values –

1
select * from t 
pivot (
     count (*) for datepart(m, date) 
     in ([01],[02],[03],[04],[05], 
      [06],[07],[08],[09],[10],[11],[12]) 
) as CountSpec 

嘗試

+0

你將丟失的桶號幫助,唐在桌子上不存在。 – Taryn

+0

「*」附近的語法錯誤。在計數(*) –

+0

將其更改爲計數(存儲桶),例如 – vittore

3
WITH bm (maxbucket) AS 
     (
     SELECT MAX(bucket) 
     FROM mydata 
     ), 
     buckets (bucket) AS 
     (
     SELECT 1 
     UNION ALL 
     SELECT bucket + 1 
     FROM buckets 
     JOIN bm 
     ON  bucket < maxbucket 
     ) 
SELECT bucket, p.* 
FROM (
     SELECT b.bucket, DATEPART(month, dt) AS mon 
     FROM buckets b 
     LEFT JOIN 
       mydata m 
     ON  m.bucket = b.bucket 
     ) q 
PIVOT (
     COUNT(mon) 
     FOR 
     mon IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) 
     ) p 
+0

非常感謝你。我現在正在執行這個聲明,這需要一段時間。這實際上是從視圖中提取數據。是否有可能在視圖上有索引? –

+0

@АртёмЦарионов:取決於視圖定義:http://msdn.microsoft.com/library/ms191432.aspx – Quassnoi

+0

很酷。這已經運行了15分鐘,仍然沒有結果,你能向我建議我能做些什麼來加速它? –