在Oracle/SQL中如何选择列值保持不变的行

4

在Oracle/SQL中如何选择列的值保持不变的行

我有一个预算清单,每个预算分布在12个月内,每个月的工资都是固定的。我想返回一个预算清单,其中12个月内工资值保持不变。

BUDGET MONTH SALARY
5468 1              1500
5468 2              1500
5468 3              1500
5468 4              1500
5468 5              1500
5468 6              1500
5468 7              1500
5468 8              1500
5468 9              1500
5468 10             1500
5468 11             1500
5468 12             1500

3456 1              1675
3456 2              1675
3456 3              1675
3456 4              1675
3456 5              1500
3456 6              1500
3456 7              1500
3456 8              1500
3456 9              1675
3456 10             1675
3456 11             1675
3456 12             1675

3948 1              2900
3948 2              2900
3948 3              2900
3948 4              2900
3948 5              2900
3948 6              2900
3948 7              2900
3948 8              2900
3948 9              2900
3948 10             2900
3948 11             2900
3948 12             2900

9756 1              2900
9756 2              2900
9756 3              2900
9756 4              2900
9756 5              2900
9756 6              2900
9756 7              2900
9756 8              2900
9756 9              2900
9756 10             2900
9756 11             2900
9756 12             2900

9712 1              2743
9712 2              2900
9712 3              2900
9712 4              2900
9712 5              2743
9712 6              2900
9712 7              2743
9712 8              2900
9712 9              2900
9712 10             2743
9712 11             2900

5394 1              1500
5394 2              1500
5394 3              1500
5394 4              1500
5394 5              1500
5394 6              1500
5394 7              1500
5394 8              1500
5394 9              1500
5394 10             1500
5394 11             1500
5394 12             1500
3个回答

4

为每个预算计算不同的工资

select budget
from your_table
group by budget
having count(distinct salary) = 1

2
SELECT BUDGET,SALARY FROM BUDTGET_TAB
HAVING COUNT(MONTH)=12
GROUP BY BUDGET,SALARY
ORDER BY 1,2

如果月份较少(假设只有8个月的预算),并且薪水在那个月保持不变,但无法确定剩余月份是否保持不变,那么结果可能会失败。在上述问题中,要求找到整年(12个月)预算相同的薪水。 - Dharmesh Porwal
请只返回翻译文本:请指明下投票的原因,因为我是按实际情况回答的。 - Dharmesh Porwal

1
SELECT BUDGET,SALARY FROM BUDTGET_TAB
GROUP BY BUDGET,SALARY
HAVING COUNT(MONTH)=12
ORDER BY 1,2;

我刚刚重新排列了由Dharmesh编写的查询...


1
是的,可以通过在 group by 之前或之后写 having 来选择两种方式,这将产生相同的结果... - Dharmesh Porwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接