网站新手,不熟悉编写 SQL 查询,并且没有这类事情的背景。但我一直在用谷歌搜索我的胜利之路。
我正在努力解决一个可能非常简单的问题。我想对一列的内容求和,如果行中的不同值与另一行中的值相同......那措辞很糟糕 - 插图怎么样:
Input Table
1. ID Value
2. 1 1000
3. 11 600
4. 11 1000
5. 11 110
6. 11 300
7. 3 999
8. 3 1
9. 4 500
10. 4 400
11. 5 1200
12. 6 1050
13. 6 100
所以基本上我正在寻找一个输出,当我运行脚本时显示 Value must >= 1000 after sum up with unit ID. 如果第一个值达到 1000,则再次显示 Unit ID。指标字段将显示“Y”是值 > = 1000。预期输出结果:
1. ID Value Ind
2. 1 1000 Y
3. 11 1000 Y
4. 11 1010 (600+110+300) N
5. 3 1000 (999+1) N
6. 5 1200 Y
7. 6 1150 (1050+100) Y
还有其他各种简单的查询,但在这一点上,我愿意承认我不知道自己在做什么。
任何帮助将不胜感激,谢谢!
我已经尝试过,
Select ID,sum(Value) from table group by ID having sum(value)>= 1000
但将以下结果返回给我
ID Sum(Value)
3 1000
5 1200
1 1100
11 2010
6 1050
Id 不保留值为 1010 和 1000 的 2 行。知道如何保留吗?
尝试了 Radu Gheorghiu 的 SQL 建议,但看起来不像我预期的那样工作。SQL:
Select ID,sum(value),‘N' from table where value >= 1000 group by ID
UNION
Select ID, value,'Y' from table where value >= 1000
输出结果:
ID SUM(VALUE) Constant Value
5 1200 N
1 1000 N
11 1000 N
6 1000 N
1 1000 Y
11 1000 Y
5 1200 Y
6 1050 Y
谢谢霍根,已经尝试了霍根的 SQL 建议,但看到的效果不如我预期的那样。ID 6 元素值没有与 (1050+100) 相加为 1150
sql:
-- Select items over 1000
SELECT ID, value, 'Y' AS Ind
FROM table
WHERE value >= 1000
UNION ALL
-- Select sum of the other items where total is >= 1000
SELECT ID, SUM(value) AS value, 'N' AS ind
FROM table
WHERE value < 1000
GROUP BY ID
HAVING SUM(value) >= 1000
Output result:
ID SUM(value) Constant Value
1 1000 Y
11 1000 Y
5 1200 Y
6 1050 Y (should be 1150)
3 1000 N
11 1010 N
感谢霍根的回答。
在与我的客户再次审查预期输出后,他们确认并提出新要求,如下所示:
Input Table:
1. ID Value
2. 1 20
3. 1 30
4. 1 20
5. 1 30
6. 1 10
7. 2 51
8. 3 50
9. 4 20
10. 4 30
11. 4 10
12. 4 5
13. 4 50
14. 5 5
15. 5 50
16. 6 5
17. 6 3
18. 6 50
19. 7 35
20. 7 4
任何 ID 值聚合 >= 50 都需要显示,并且指标标志显示为“Y”,只有一个 ID 值 >= 50。
预期输出:
1. ID Value IND
2. 1 110(20+30+20+30+10) N
3. 2 51 Y
4. 3 50 Y
5. 4 115(20+30+10+5+50) N
6. 5 55 (50+5) N
7. 6 58 (50+8) N
谢谢任何专家可以建议?我不介意创建另一个工作表来满足我的预期结果。