sql-server - 如何根据sql server中的条件获取标志值
问题描述
我有一个关于 SQL Server 的问题:如何根据 pid 获取标志值?
如果名称值 A 和名称值 B 对应的 id 值为 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 中完成此任务。
解决方案
如果每个 PID 始终存在 A & B,则可以执行此操作
SELECT PID,
Flag = CASE WHEN MIN(ID) = 1 THEN 1 ELSE 0 END
FROM TABLECHECK
GROUP BY PID
推荐阅读
- rust - 杀死存储在 Mutex 中的进程
- python - 浏览器窗口打开 URL 然后在 Selenium Python 中突然关闭
- ubuntu - 如何在 Ubuntu 服务器之间传输文件,以便 A 使用密钥登录到 B,并在 B 登录到 A 的情况下获取文件?
- indexing - Hybris Solr 索引引发 Nullpointer 异常
- json - SwiftUI - MapKit 注释 - 成功从 json 中获取,但无法为弹出卡添加手势
- flutter - 在 Flutter 中我希望能够显示我上次写的文本并向其中添加文本
- xcode - SwifUI MacOS App AVPlayer 无法使用视频 URL
- python - 如何在 QTableView 中使用选中的复选框检索多行
- arguments - 为什么我使用 frangi 得到这个结果?
- r - 通过正则表达式替换 quanteda 令牌