Я хочу посчитать значения в таблице с разными предложениями where и задаться вопросом, есть ли лучший способ сделать это.
В этом коде я считаю одно значение.
SELECT v.name, count(v.value) AS v1
FROM dbo.table as v
WHERE v.organisationID = 2
AND v.datecreated > '2018-01-01'
AND v.datecreated < '2018-05-01'
AND v.value = 1
GROUP BY v.name
Я также хочу подсчитать все строки со значением = 2, мой способ сделать это с помощью подвыборки.
SELECT v.name, count(v.value) AS v1, (SELECT v2.name, count(v2.value)
FROM dbo.table as v2
WHERE v2.organisationID = 2
AND v2.datecreated > '2018-01-01'
AND v2.datecreated < '2018-05-01'
AND v2.value = 2
GROUP BY v2.name) AS v2
FROM dbo.table as v
WHERE v.organisationID = 2
AND v.datecreated > '2018-01-01'
AND v.datecreated < '2018-05-01'
AND v.value = 1
GROUP BY v.name
Таблица содержит> 100 миллионов строк, поэтому я действительно хочу самый быстрый способ.Я использую кластерный индекс columnstore для таблицы.
Есть ли способ сделать это без подвыбора.
Псевдокод:
SELECT v.name, count(v.value where v.value=1) AS v1, count(v.value where v.value=2) AS v2
FROM dbo.table as v
WHERE v.organisationID = 2
AND v.datecreated > '2018-01-01'
AND v.datecreated < '2018-05-01'
GROUP BY v.name