嗨我在这里遇到Oracle SQL的情况,如下所示:sql结果: -
Company No of Employees Group Derived Field
a 1 x
b 1 x
c 2 y
d 1 y
所以基于该组,如果所有公司都有相同的员工,那么我想要派生字段 真的是假的。
因此对于组x,如果公司a和b具有相同的员工数量,那么派生字段为 a和b是真的。至于c和d因为员工的数量不同所以派生领域 应该是假的。
任何帮助将不胜感激。感谢
答案 0 :(得分:1)
您想使用分析功能。我想这就是你想要的:
select t.*,
(case when min(NumEmployees) over (partition by grp) =
max(NumEmployees) over (partition by grp)
then 1
else 0
end) as DerivedField
from table t;
注意:我通常将布尔值表示为0和1。
答案 1 :(得分:0)
这是一个纯粹的SQL解决方案。假设列名是company,number,ggroup,test。
为方便起见,将表t的视图创建为
创建视图gnums作为选择计数(不同的数字)为gnum,count(数字)为num,ggroup来自t group by ggroup;
此选择
选择a。*,b.gnum = 1和b.num<> 1作为来自t a的测试,gnums b其中a.ggroup = b.ggroup;
产量
id | company | number | ggroup | test
----+---------+--------+--------+------
1 | a | 1 | x | t
2 | b | 1 | x | t
3 | c | 2 | y | f
4 | d | 1 | y | f
5 | e | 2 | z | f
我添加了行e来表明任何只有一家公司的团队应该产生错误,假设这是你想要的。