मेरे पास 'attLog' के रूप में संदर्भित एक टेबल है जिसमें एम्पीआईडी है और उस समय के साथ-साथ जब वे काम से बाहर हो जाते हैं और सीरियल भी जो एक से गिना जाता है। मैं इसे एक तालिका के साथ जोड़ता हूं जिसे 'कर्मचारी' के रूप में जाना जाता है, लेकिन ऐसा करने पर यह मुझे शीर्ष के सबसे नज़दीकी परिणाम देता है, लेकिन मुझे सबसे हालिया या सबसे नीचे के परिणाम की आवश्यकता होती है।
Dbo.attलॉग
empID | time | DATE | serialNo
------+--------+-----------+----------
1001 | 5.01PM | 2020-10-1 | 1
1002 | 5.04PM | 2020-10-1 | 2
1002 | 5.02PM | 2020-10-2 | 3
1001 | 5.04PM | 2020-10-2 | 4
1002 | 5.15PM | 2020-10-2 | 5
यह परिणाम है कि जब मैं क्वेरी चलाता हूं तो मुझे मिलता है ..
डीबीओ कर्मचारी
empID | latestTime
------+-----------
1001 | 5.04PM
1002 | 5.02PM
यह वह परिणाम है जो मैं होना चाहता हूं ..
डीबीओ कर्मचारी
empID | latestTime
------+-----------
1001 | 5.04PM
1002 | 5.15PM
यहां मेरी क्वेरी है जिसका मैं उपयोग कर रहा हूं ..
UPDATE employees
SET employees.latestTime = attLog.time
FROM employees employees
INNER JOIN attLog attLog ON employees.empID = attLog.empID
WHERE attLog.authDate = '2020-10-2'
आपका बहुत बहुत धन्यवाद। कोई भी सहायताकाफी प्रशंसनीय होगी।
1 उत्तर
पहले तालिका को एकत्र करें और फिर शामिल हों:
UPDATE e
SET e.latestTime = al.max_time
FROM employees e JOIN
(SELECT al.empId, MAX(al.time) as max_time
FROM attLog al
WHERE al.authDate = '2020-10-02'
GROUP BY al.empId
) al
ON e.empID = al.empID;
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।