【问题标题】:(Simple?) Pivot Example(简单?)枢轴示例
【发布时间】:2013-12-28 04:20:48
【问题描述】:

我在试图找出我认为应该是一个非常基本的支点时遇到了麻烦。我曾尝试在这里和其他地方搜索类似“简单支点示例”的内容,但我发现大多数示例对于我的穴居人大脑来说还不够简单。

我在一个表中有 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

其中每个值表示 col1_2 x col2_1col1_3 x col2_1 等的出现次数 (count)。

我试过了:

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

但它不正确。

提前感谢您的帮助。

【问题讨论】:

    标签: tsql pivot pivot-table


    【解决方案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
    

    【讨论】:

    • 谢谢,史蒂夫。这有点接近,但不完全在那里。这给了我名为col1_2col1_3 等的列,这些值是col2 的所有值的计数。我正在尝试获取col1_2 x col2_1col1_3 x col2_1 等。这有意义吗?
    • 您是在尝试将枢轴的结果相乘吗?
    • 我正在尝试获取次数:col1 = 2 where col2 = 1, col1 = 3 where col2 = 1 , ... col1 = 10 其中col2 = 5。我试图在上面的示例所需输出中显示这一点。
    • 非常感谢,史蒂夫!如果您更新答案,我会接受。此外,如果您不介意解释 Count(1) as cnt 部分,我将不胜感激。
    • 我更新了答案。 count(1) 只计算与 group by 子句匹配的记录。这与使用 count(col2) 相同,只是达到相同目的的方式不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多