我有一个情况,同一个 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/