Тип вывода матрицы в SQL Server - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно количество клиентов, которые подписались на каналы.

Where channel = telugu and channel = hindi

Where channel = telugu and channel = English 

Where channel = hindi and channel = English

1 Ответ

0 голосов
/ 02 июля 2019

Я думаю, я знаю, для чего вы идете ... У клиентов может быть несколько каналов, и вы заинтересованы в подсчете клиентов, у которых есть конкретные комбинации каналов. Если это правильно И все ваши комбинации имеют одинаковое количество элементов, вы можете использовать что-то вроде следующего.

IF OBJECT_ID('tempdb..#channel_pairs', 'U') IS NOT NULL 
BEGIN DROP TABLE #channel_pairs; END;

CREATE TABLE #channel_pairs (
    c1 varchar(20) NOT NULL,
    c2 varchar(20) NOT null
    );
INSERT #channel_pairs (c1, c2) VALUES ('telugu', 'hindi'), ('telugu', 'English'), ('hindi', 'English');

SELECT 
    channel_pair = cp.c1 + ', ' + cp.c2,
    cp_count = COUNT(1)
FROM
    dbo.customer_channel cc1
    JOIN dbo.customer_channel cc2
        ON cc1.customer_id = cc2.customer_id
    JOIN #channel_pairs cp
        ON cc1.channel = cp.c1
        AND cc2.channel = cp.c2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...