我有一张桌子上有一个名单,每个名字都有他自己的薪水和头衔,每个骑士都喜欢他自己的国王:
ID | NAME | SALARY | TITLE | KingNo
01 | Jones | 900 | King |
02 | Smith | 800 | Knight | 01
03 | Janel | 110 | Knight | 05
04 | David | 500 | Knight | 01
05 | James | 900 | King |
06 | Judas | 150 | Knight | 05
但是现在我需要把所有骑士的薪水与他们的国王之间的差额区分开来。
我知道如何获得每个国王的薪水和每个骑士的薪水,但我无法弄清楚如何才能将差异变成一个新的cloumn。
像
ID | NAME | SALARY | TITLE | KingNo | Difference
01 | Jones | 950 | King | |
02 | Smith | 800 | Knight | 01 | -150
03 | Janel | 110 | Knight | 05 | -840
04 | David | 500 | Knight | 01 | -450
05 | James | 950 | King | |
06 | Judas | 150 | Knight | 05 | -800
有人可以给我一个提示我怎么能做到这一点? 对不起,我的英语不好,我不是母语人士。
最好的问候
答案 0 :(得分:0)
SELECT
t1.ID, t1.NAME, t1.SALARY, t1.TITLE, t1.KingNo,
t1.SALARY - COALESCE(t2.SALARY, 0) AS Difference
FROM
knights t1
LEFT JOIN knights t2 ON (t1.KingNo = t2.ID)
WHERE
t1.TITLE != "King"
答案 1 :(得分:0)
我只知道MS SQL不是MySQL ...所以我尝试用MS SQL解决你的问题.... 以下程序可能对你有用......
SELECT K.ID, K.NAME, K.Salary, K.Title, K.KingNo,
( CAST(K.Salary AS INT)
- CAST(( SELECT TOP 1
KM.salary
FROM dbo.KingMaster KM
WHERE KM.ID < K.ID
AND KM.KingNo IS NULL
ORDER BY id DESC
) AS INT) ) 'Diff'
FROM dbo.KingMaster AS K
ORDER BY K.ID