sql-server - 如何根据 ID 进行分区比较所有列值

标签 sql-server sql-server-2014

我有一个情况,同一个 ID 有很多行,我只是想知道是否有任何方法可以查明给定 ID 是否包含某些特定值。

表 1

ID      Dept      Salary       Flag    Date 
1        IT        5000         N      2017-01-01
1        IT        5000         N      2017-01-02
1        IT        5000         N      2017-01-03
1        IT        5000         N      2017-01-04
1        IT        5000         N      2017-01-05
2        HR        4000         N      2017-01-01
2        HR        4000         N      2017-01-02
2        HR        4000         Y      2017-01-03
2        HR        4000         N      2017-01-04
2        HR        4000         N      2017-01-05
3        Fin       4500         N      2017-01-08
3        Fin       4500         N      2017-01-09
3        Fin       4500         N      2017-01-10
3        Fin       4500         N      2017-01-11
3        Fin       4500         N      2017-01-12
4        Edu       4800         N      2017-02-10
4        Edu       4800         N      2017-02-11
4        Edu       4800         N      2017-02-12
4        Edu       4800         Y      2017-02-13
4        Edu       4800         N      2017-02-14
4        Edu       4800         N      2017-02-15

预期结果:

ID      Dept      Salary       Flag    Date 
1        IT        5000         N      2017-01-01
1        IT        5000         N      2017-01-02
1        IT        5000         N      2017-01-03
1        IT        5000         N      2017-01-04
1        IT        5000         N      2017-01-05

3        Fin       4500         N      2017-01-08
3        Fin       4500         N      2017-01-09
3        Fin       4500         N      2017-01-10
3        Fin       4500         N      2017-01-11
3        Fin       4500         N      2017-01-12

由于IT和Fin在任何行中都没有Y标志,我只想显示这个结果。有什么办法可以让我找到这些信息吗?

最佳答案

试试这个

select * from @mytable
where id in (
select 
id from @mytable
group by id
having SUM(case when flag='N' then 1 else 0 end) =COUNT(*))

关于sql-server - 如何根据 ID 进行分区比较所有列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47426916/

相关文章:

sql - "NOT IN"在SQL查询中的性能

sql-server - 当XAP位于Azure Blob存储上时如何访问数据库?

c# - 从 C# 运行时 SQL 查询超时,在 SQL Server Management Studio 中运行速度很快

mysql - 将分隔的逗号值插入到sql表中

sql - 获取错误 `Arithmetic overflow error converting numeric to data type varchar.` 的列名

sql-server - 无法使用 EXECUTE AS OWNER 在存储过程中创建登录名?

sql-server-2014 - SQL Server 链接服务器查询返回空行

file - 在 SQL Server Management Studio 中导入数据库(SQL 文件)

sql - 选择不同的行并显示每个值的计数

sql - 如何在SQL中为每个组选择一个最大行