美好的一天
我们有一个服务部门,我们出去服务设备。有时我们会为特定客户提供一张以上的工作卡,但我们只收取一个" CALL OUT FEE"即
JOB CARD | CLIENT | DATE | CALL OUT FEE
121 | AA | 01/01/2014 | 500
124 | AA | 01/01/2014 | 0
我想将CALL OUT FEE仅添加到第一个条目,其中客户端和日期在其他条目中相同。
我不知道从哪里开始,我想我必须以某种方式索引重复项1,2,3等,并使用HAVING INDEX = 1来保留第一个条目。
我怎么能以一种非常简单的方式做到这一点?
由于
答案 0 :(得分:2)
如果job card
是唯一的,您可以尝试这样的事情:
select * from your_tab
where job_card in (
select min(JOB_CARD)
from your_tab group by CLIENT, DATE
);
答案 1 :(得分:0)
这将仅更新给定ClientCode的第一个JobCard记录和日期:
DECLARE @CallOutFee MONEY
DECLARE @ClientCode VARCHAR(50)
DECLARE @Date DATETIME
SET @CallOutFee = 500
SET @ClientCode = 'AA'
SET @Date = '20141125'
UPDATE
JobCards
SET
[CALL OUT FEE] = @CallOutFee
WHERE
JobCardID = (
SELECT
MIN(JobCardID)
FROM
JobCards
WHERE
ClientCode = @ClientCode AND
[Date] = @Date
)