2014-11-24 69 views
0

美好的一天在重複條目上添加金額

我們有一個服務部門,在那裏我們出去服務設備。它有時會發生,我們必須爲特定客戶不止一個工作卡,但我們只收取一個「咻費」即

JOB CARD | CLIENT | DATE | CALL OUT FEE 
    121 | AA  | 01/01/2014 | 500 
    124 | AA  | 01/01/2014 | 0 

我想FEE添加CALL OUT只對第一個條目,其中客戶端和日期在其他條目中是相同的。

我不知道從哪裏開始,我想我必須以某種方式索引重複的1,2,3等,並使用HAVING INDEX = 1僅保留第一個條目。

我該如何以非常簡單的方式做到這一點?

感謝

回答

2

如果job card是獨一無二的,你可以嘗試這樣的事:

select * from your_tab 
where job_card in (
    select min(JOB_CARD) 
    from your_tab group by CLIENT, DATE 
); 
+0

工作卡是唯一的,但只需要min(Job card),其中CLIENT和DATE是相同的。我只能收取一次拜訪費用。如果我在同一天爲同一客戶提供5張工作卡,則只需收取500.00美元的費用。認爲將它添加到第一張工作卡片上然後將0添加到其他卡片是有意義的。 – 2014-11-24 21:47:18

+1

@Ruan du Preez答案中的查詢符合你所描述的內容。對於客戶端+日期的每個組合,它找到最小工作卡,然後檢索只有最小工作卡的行 – Multisync 2014-11-24 21:49:59

+0

這沒有訣竅..謝謝你這麼多 – 2014-11-24 22:10:22

0

這將更新僅第一個JobCard記錄對於給定ClientCode和日期:

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 
      )