У меня есть вопрос о SQL Server: как получить значения флагов на основе pid?
Если значения имени A и значения имени B, соответствующие значениям идентификатора, равны 1, тогда флаг 1 в противном случае 0
CREATE TABLE [dbo].[TABLECHECK]
(
[ID] [INT] NULL,
[NAME] [VARCHAR](50) NULL,
[PID] [INT] NULL
) ON [PRIMARY]
GO
INSERT INTO [dbo].[TABLECHECK] ([ID], [NAME], [PID])
VALUES (1, N'A', 1), (0, N'B', 1), (1, N'A', 2),
(1, N'B', 2), (0, N'A', 3), (0, N'B', 3)
На основании этих данных я хочу получить вывод, подобный следующему:
PID | Flag
-----+-------
1 | 0
2 | 1
3 | 0
Мой запрос:
select
pid, count(id),
case
when name in ('a', 'b') and id = 1
then 1
else 0
end
from
[TABLECHECK]
group by
pid
Этот запрос приводит к ошибке.
Скажите, пожалуйста, как выполнить эту задачу в SQL Server.