2016-02-26 54 views
0

我有一個數據庫,它包含返回產品的測試數據。 Test_Time是一個顯示日期,小時和分鐘的字符串。我想更新數據庫以包含秒數,以便按時間順序顯示結果。我跑到一個查詢把記錄順序(ORDER BY SN,RMA_NUM,Test_Time,ID)sql第二次添加時間

結果:

ID  SN  RMA_NUM  Test_Time  FAULT_TYPE 
3119 CACA014 FH76085254 10/29/2015 08:27 A1 
3120 CACA014 FH76085254 10/29/2015 08:27 B8 
8923 CACA042 FH83872608 02/08/2016 09:11 A2 
8924 CACA042 FH83872608 02/08/2016 09:14 B3 
8925 CACA042 FH83872608 02/08/2016 09:14 B6 
1651 CADA091 FH67974034 09/18/2015 09:30 A4 
1652 CADA091 FH67974034 09/18/2015 09:30 A4 
5267 CADA091 FH76347276 11/17/2015 12:31 A9 
5268 CADA091 FH76347276 11/17/2015 12:31 C1 

如何我寫SQL更新Test_Time包括一個獨特的第二?

所以我的結果是這樣的:

ID  SN  RMA_NUM  Test_Time    FAULT_TYPE 
3119 CACA014 FH76085254 10/29/2015 08:27:01  A1 
3120 CACA014 FH76085254 10/29/2015 08:27:02  B8 
8923 CACA042 FH83872608 02/08/2016 09:11:01  A2 
8924 CACA042 FH83872608 02/08/2016 09:14:02  B3 
8925 CACA042 FH83872608 02/08/2016 09:14:03  B6 
1651 CADA091 FH67974034 09/18/2015 09:30:01  A4 
1652 CADA091 FH67974034 09/18/2015 09:30:02  A4 
5267 CADA091 FH76347276 11/17/2015 12:31:01  A9 
5268 CADA091 FH76347276 11/17/2015 12:31:02  C1 

回答

1

可以使用row_number()做到這一點:

select t.*, 
     (test_time + ':' + 
     right('00' + cast(row_number() over (partition by sn order by id) as varchar(255)), 2) 
     ) as new_test_time 
from t; 

我建議,雖然,你存儲日期/時間爲datetime

編輯:

您可以使用此的更新:

with toupdate as (
     select t.*, 
      (test_time + ':' + 
       right('00' + cast(row_number() over (partition by sn order by id) as varchar(255)), 2) 
      ) as new_test_time 
     from t 
    ) 
update toupdate 
    set test_time = new_test_time; 
+0

真棒,查詢工作......謝謝你,戈登。如何結合UPDATE語句來更新Test_Time字段? –

+0

完美...再次感謝! –