Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

समूह द्वारा छूटी हुई तिथियों को भरना

आप data.table . का उपयोग कर सकते हैं R . से . मान लें कि 'समय' कॉलम 'तारीख' वर्ग का है,

library(data.table)#v1.9.5+
DT1 <- setDT(df1)[, list(time=seq(min(time), max(time), by ='day')),
                    by =.(shop_id, item_id)]
setkeyv(df1, names(df1)[1:3])[DT1][is.na(value), value:=0]
#   shop_id item_id       time value
#1:     150       1 2015-07-10     3
#2:     150       1 2015-07-11     5
#3:     150       1 2015-07-12     0
#4:     150       1 2015-07-13     2
#5:     150       2 2015-07-10    15
#6:     150       2 2015-07-11     0
#7:     150       2 2015-07-12    12

डेवेल संस्करण में, आप इसे 'कुंजी' सेट किए बिना भी कर सकते हैं। डेवेल संस्करण को स्थापित करने के निर्देश here हैं

 df1[DT1, on =c('shop_id', 'item_id', 'time')][is.na(value), value:=0]
 #   shop_id item_id       time value
 #1:     150       1 2015-07-10     3
 #2:     150       1 2015-07-11     5
 #3:     150       1 2015-07-12     0
 #4:     150       1 2015-07-13     2
 #5:     150       2 2015-07-10    15
 #6:     150       2 2015-07-11     0
 #7:     150       2 2015-07-12    12

या जैसा कि @Arun ने सुझाव दिया है, एक अधिक कुशल विकल्प होगा

 DT1[, value := 0L][df1, value := i.value, on = c('shop_id', 'item_id', 'time')]
 DT1 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक इकाई फ़ील्ड को कैसे मैप करें जिसका नाम जेपीए में आरक्षित शब्द है

  2. संग्रहीत प्रक्रिया से डेटा पुनर्प्राप्त करें जिसमें एकाधिक परिणाम सेट हैं

  3. DATETIME कॉलम के लिए रैंडम मान

  4. T-SQL का उपयोग करके SQL सर्वर में लिंक किए गए सर्वरों की सूची वापस करने के 2 तरीके

  5. SQL सर्वर में XML सम्मिलित करते समय एन्कोडिंग त्रुटि को स्विच करने में असमर्थ कैसे हल करें?