2013-07-22 45 views
-1

我有這樣從一列選擇數據和更新基於條件

Table LatestData 
**Name  Version** 
Name1  1.2 
Name2  1.4 
Name3  1.6 
Name4  1.3 
Name5  2.2 

Table CurrentData 
Name  CurrentVersion Compliance 
Name1  1.0 
Name3  0.7 
Name4  1.2 

我需要更新下面的條件基於所述合規性柱的結構的另一列: N =最新版本(版本從LatestData表)

  1. 如果CurrentData表中的currentVersion小於(N-2); Compliance = Full
  2. 如果currentData表中的currentVersion介於greaterThan(N-2)和lessThan(N-4)之間; Compliance =部分
  3. 如果CurrentData表中的currentVersion大於N-5;合規性=不符合

你能否幫我查詢更新表CurrentData的合規性列表?

感謝&問候

+0

我真的不明白你是什麼之後。考慮提供一個具有代表性的例子(包括DDL和/或一個sqlfiddle)以及所需的結果集。 – Strawberry

+0

更新了問題。不知何故,大於和小於標誌被空的空間所取代。根據兩個版本列之間的差異,我需要更新我的合規性列。直到現在,我只能夠獲取數據映射到名稱 –

+1

和......您的問題是什麼?你知道CASE嗎...什麼時候...然後...其他...結束? http://msdn.microsoft.com/en-us/library/ms181765.aspx –

回答

1

這已經有一段時間,因爲我寫的任何SQL,但是因爲你請求一個簡單的查詢我以爲我會試試看。也許別人可以糾正我的答案,如果事實證明它不能按預期工作。

UPDATE CurrentData 
JOIN LatestData on 
    CurrentData.Name = LatestData.Name 
SET Compilance = IF(CurrentVersion < Version - 2, 'FULL', IF(CurrentVersion > Version - 2 && CurrentVersion < Version - 4, 'Partial', IF(CurrentVersion > Version - 5, 'Not compilant', 'Nope'))); 

這已經過測試,它應該運行正常=)

+0

它肯定有幫助,但無法讓它運行,因爲沒有發生連接,如果發生錯誤 –

+0

好的,我重寫了它並進行了測試。現在它應該按預期工作。 – Sane

+0

@SandiipPatil那麼,它有幫助嗎? – Sane