MySQL - 减去表的某些行并将结果与其他行一起显示
我几个小时以来一直在努力解决这个查询。我有大量数据,我想只显示 ID 为 10、15、18 和 25 的部门。从这里,我想从 15 中减去 ID 为 18 的每个部门的利润,即 15-18。
我使用以下查询过滤数据:
SELECT * FROM deptTable WHERE ID IN(10,15,18,25) AND date = '2009-01-25'
dept ---------- date ---------------- ID ----------------- 利润
英国 ---------- 2009-01-25 ---------- 10 ---------------- 2000
巴西 ------- 2009-01-25 ---------- 10 ---------------- 1300
日本-------- 2009-01-25 --------- 10 ---------------- 2500
西班牙-------- 2009-01-25 ---------- 10 ---------------- 3200
英国 ---------- 2009-01-25 ---------- 15 ---------------- 4000
巴西 ------- 2009-01-25 ---------- 15 ---------------- 1700
日本-------- 2009-01-25 ---------- 15 ---------------- 3500
西班牙-------- 2009-01-25 ---------- 15 --------------- 1200
英国 ---------- 2009-01-25 ---------- 18 ---------------- 2500
巴西 ------- 2009-01-25 ---------- 18 ---------------- 1300
日本-------- 2009-01-25 --------- 18 ---------------- 2120
西班牙------- 2009-01-25 ---------- 18 ---------------- 800
英国 ---------- 2009-01-25 ---------- 25 ---------------- 3000
巴西 ------- 2009-01-25 ---------- 25 ---------------- 1850
日本-------- 2009-01-25 --------- 25 ---------------- 1580
西班牙-------- 2009-01-25 ---------- 25 ------------------ 1070
我基本上想要的是然后减去每个ID 18 的行来自 ID 15 的行。以英国为例:
4000 - 2500 = 1500,执行其余的 dept 区域将得到所需的结果:
dept -------- -- 日期 ---------------- ID ----------------- 利润
英国 ---------- 2009-01-25 ---------- 10 ---------------- 2000
巴西 ------- 2009-01-25 ---------- 10 ---------------- 1300
日本-------- 2009-01-25 --------- 10 ----------------- 2500
西班牙-------- 2009-01-25 ---------- 10 ---------------- 3200
英国 ---------- 2009-01-25 ---------- 15-18 ------------ 1500
巴西 ---------- 2009-01-25 ---------- 15-18 ------------ 400
日本-------- 2009-01-25 ---------- 15-18 ----------- 1380
西班牙-------- 2009-01-25 ---------- 15-18 ----------- 400
英国 ---------- 2009-01-25 ---------- 25 ---------------- 3000
巴西 ------- 2009-01-25 ---------- 25 ---------------- 1850
日本-------- 2009-01-25 ---------- 25 ---------------- 1580
西班牙-------- 2009-01-25 ---------- 25 ------------------ 1070
2 分:
1.计算出的行ID列不必读取“15-18”,我只是输入“15-18”来帮助解释问题
2.斜体/粗体是唯一计算的行,所有其他行保持不变这样
的事情肯定是可能的吗?
谢谢,
I have been struggling with getting this query right for hours now. I have a huge amount of data and I want to show just the departments with IDs 10,15,18 and 25. From here, I want to subtract the profits for each dept with ID 18 from 15, i.e. 15-18.
I filter the data with the following query:
SELECT * FROM deptTable WHERE ID IN(10,15,18,25) AND date = '2009-01-25'
dept ---------- date ---------------- ID ----------------- profit
UK ---------- 2009-01-25 ---------- 10 ---------------- 2000
Brazil ------- 2009-01-25 ---------- 10 ---------------- 1300
Japan------- 2009-01-25 --------- 10 ---------------- 2500
Spain------- 2009-01-25 ---------- 10 ---------------- 3200
UK ---------- 2009-01-25 ---------- 15 ---------------- 4000
Brazil ------- 2009-01-25 ---------- 15 ---------------- 1700
Japan------- 2009-01-25 ---------- 15 ---------------- 3500
Spain-------- 2009-01-25 ---------- 15 --------------- 1200
UK ---------- 2009-01-25 ---------- 18 ---------------- 2500
Brazil ------- 2009-01-25 ---------- 18 ---------------- 1300
Japan------- 2009-01-25 --------- 18 ---------------- 2120
Spain------- 2009-01-25 ---------- 18 ---------------- 800
UK ---------- 2009-01-25 ---------- 25 ---------------- 3000
Brazil ------- 2009-01-25 ---------- 25 ---------------- 1850
Japan------- 2009-01-25 --------- 25 ---------------- 1580
Spain-------- 2009-01-25 ---------- 25 --------------- 1070
What I basically want is to then subtract each row with ID 18 from rows with ID 15. Taking the UK as an example:
4000 - 2500 = 1500, doing the rest of the dept regions will give the desired result which is:
dept ---------- date ---------------- ID ----------------- profit
UK ---------- 2009-01-25 ---------- 10 ---------------- 2000
Brazil ------- 2009-01-25 ---------- 10 ---------------- 1300
Japan------- 2009-01-25 --------- 10 ----------------- 2500
Spain------- 2009-01-25 ---------- 10 ---------------- 3200
UK ---------- 2009-01-25 ---------- 15-18 ------------ 1500
Brazil ------- 2009-01-25 ---------- 15-18 ------------ 400
Japan------- 2009-01-25 ---------- 15-18 ----------- 1380
Spain-------- 2009-01-25 ---------- 15-18 ----------- 400
UK ---------- 2009-01-25 ---------- 25 ---------------- 3000
Brazil ------- 2009-01-25 ---------- 25 ---------------- 1850
Japan------- 2009-01-25 ---------- 25 ---------------- 1580
Spain-------- 2009-01-25 ---------- 25 --------------- 1070
2 points:
1. The calculated rows ID column doesn't have to read '15-18', I've just typed '15-18' to help explain the issue
2. The italics/bold are the only calculated rows, all other rows remain the same
Surely something like this is possible?
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

我认为这样的事情会起作用......
测试结果:
I think that something like this will work...
Tested result: