sql - 如何在 SQL Server 和 Postgresql 中实现这一点
问题描述
输入/输出
country Status
ind y
ind y
ind y
us y
us y
us y
uk y
uk y
uk n
o/p
country Status Flag
ind y 1
ind y 1
ind y 1
us y 1
us y 1
us y 1
uk y 0
uk y 0
uk n 0
解决方案
你似乎想要EXISTS
:
SELECT t.*,
(CASE WHEN EXISTS (SELECT 1
FROM table t1
WHERE t1.country = t.country AND t1.Status = 'n'
)
THEN 0 ELSE 1
END) AS Flag
FROM table t;
您还可以使用窗口功能:
SELECT t.*,
(CASE WHEN SUM(CASE WHEN [STATUS] = 'n' THEN 1 ELSE 0 END) OVER (PARTITION BY COUNTRY) = 1
THEN 0 ELSE 1
END) AS Flag
FROM table t;
推荐阅读
- c# - 在从输入读取下一行之前循环中断
- python - python中的strptime错误“不匹配”
- git - vscode git集成中的多个user.name条目
- javascript - 在 FormData 中附加 Blob 通过 axios 发送一个 [Object object]
- python - 在设计测试套件时使用类继承
- c# - linq 按两列分组并仅获取具有相同分组值的行
- reactjs - Babel 7 preset-env useBuiltIns: "usage" Symbol is undefined problem in IE11
- c# - iOS 中的静默通知
- javascript - 带有 Framer Motion 的 Next.js 中的“window.innerWidth < 768”
- javascript - 如何从数组中返回所述值