Группировать по связанным условиям - PullRequest
0 голосов
/ 29 января 2020

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

CompanyCode|Year|Personcode
1234       |2019|1
1234       |2019|2
1234       |2020|1
1234       |2020|2
2222       |2020|1
2222       |2020|2

Теперь я хочу проверить, какие компании имеют записи на 2019 и 2020 годы. Моя идея была:

Select companycode from table
where year = '2019' and year = '2020'
group by compnaycode

Но результат пуст. Может ли кто-нибудь сказать мне, как сделать этот запрос?

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Вы можете сделать агрегацию:

select CompanyCode
from table t
where [year] in (2019, 2020)
group by CompanyCode
having count(distinct [year]) = 2;
1 голос
/ 29 января 2020

Учитывая, что вам нужно только значение CompanyCode, я бы лично использовал предложение HAVING:

SELECT CompanyCode
FROM dbo.YourTable
GROUP CompanyCode
HAVING COUNT(CASE [Year] WHEN 2019 THEN 1 END) >= 1
   AND COUNT(CASE [Year] WHEN 2020 THEN 1 END) >= 1;

[Year] никогда не сможет иметь оба значения 2019 и 2020 в то же время , и, следовательно, почему ваша попытка не удалась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...