Сводная таблица SQL - PullRequest
       14

Сводная таблица SQL

0 голосов
/ 17 декабря 2009

У меня есть такая таблица;

var1    var2    var3    cats

a      b       b       cat1
        b       b       cat1
a                      cat2
a      a       a       cat3
a      a       a       cat2

и хочу получить сводную таблицу. Я хочу сосчитать a и b с категорией vars и cat. Я - пользователь Excel. Я посмотрел другие образцы, но не смог решить эту проблему ... спасибо за помощь

vars    cats    a   b

var1    cat1    1   
var1    cat2    2   
var1    cat3    1   
var2    cat1        2
var2    cat2    1   
var2    cat3    1   
var3    cat1        2
var3    cat2    1   
var3    cat3    1   

1 Ответ

1 голос
/ 17 декабря 2009

Если вы используете Sql Server 2005, вы можете использовать UNPIVOT

DECLARE @Table TABLE(
        var1 VARCHAR(10),
        var2 VARCHAR(10),
        var3 VARCHAR(10),
        cats VARCHAR(10)
)


INSERT INTO @Table SELECT 'a','b','b','cat1'
INSERT INTO @Table SELECT null,'b','b','cat1'
INSERT INTO @Table SELECT 'a',null,null,'cat2'
INSERT INTO @Table SELECT 'a','a','a','cat3'
INSERT INTO @Table SELECT 'a','a','a','cat2'

SELECT  MyVars,
        cats,
        SUM(CASE WHEN Vars = 'a' THEN 1 ELSE 0 END) A,
        SUM(CASE WHEN Vars = 'b' THEN 1 ELSE 0 END) B
FROM    (
            SELECT  *
            FROM    (
                        SELECT  cats,
                                var1,
                                var2,
                                var3
                        FROM    @Table
                    )p
            UNPIVOT (Vars FOR MyVars IN (var1, var2,var3)) AS up
        ) sub
GROUP BY MyVars,
        cats
ORDER BY 1, 2
...