2013-12-10 48 views
0

我在與試圖找出我覺得應該是一個非常基本的支點麻煩。我嘗試過在這裏和其他地方搜索「簡單的示例」這樣的東西,但是我發現大部分示例對於我的穴居人大腦來說都不夠簡單。(簡單?)樞軸例

我在表中有2 INT列,說col1col2col1的值是210col2的值是15

我的期望的輸出是這樣的:

  col2_1 col2_2 col2_3 col2_4 col2_5 
col1_2 10  5   2   6   7 
col1_3  8  6   3   22  12 
    ... 
col1_10 20  2   0   3  90 

其中每個值表示的出現(count)的col1_2 x col2_1col1_3 x col2_1的數量,等等。

我已經試過這樣:

SELECT 
    col1_2, 
    col1_3, 
    col1_4, 
    col1_5, 
    col1_6, 
    col1_7, 
    col1_8, 
    col1_9, 
    col1_10'  
FROM 
    (
     SELECT 
      col1, 
      col2 
     FROM 
      data_table 
    ) AS tSource 
PIVOT 
(
    COUNT(col2) 
    FOR col1 IN (2, 3, 4, 5, 6, 7, 8, 9, 10) 
) AS tPivoted 

但它是不正確的。

在此先感謝您的幫助。

回答

1
SELECT 
    'col1_'+cast(col1 as varchar(2)), 
    isnull([1],0) [col2_1], 
    isnull([2],0) [col2_2], 
    isnull([3],0) [col2_3], 
    isnull([4],0) [col2_4], 
    isnull([5],0) [col2_5] 
    FROM 
    (Select col1, col2, Count(1) as cnt from table1 
    GROUP BY col1, col2) as tSource 
    PIVOT 
    (
    SUM(cnt) 
    FOR COL2 in ([1],[2], [3], [4], [5]) 
) as tPivoted 
+0

謝謝你,史蒂夫。這有點接近,但並不完全。這給了我一個名爲'col1_2','col1_3'等的列,這些值是'col2'所有值的計數。我正在嘗試獲取「col1_2 x col2_1」,「col1_3 x col2_1」等。這有道理嗎? – tptcat

+0

您正試圖乘以樞軸的結果? –

+0

我試圖得到次數:'col1' ='2'其中'col2' ='1','col1' ='3'其中'col2' ='1',...'col1' ='10'其中'col2' ='5'。我試圖在上面的示例期望的輸出中顯示。 – tptcat