एसक्यूएल क्वेरी यह पता लगाने के लिए कि रिकॉर्ड दर्ज किया गया पहला रिकॉर्ड है या नहीं

मान लें कि हमारे पास उपयोगकर्ता आईडी, कैलेंडर दिनांक और कार्यनाम के साथ कॉलम के रूप में एक तालिका है।

कृपया मुझे बताएं कि एसक्यूएल क्वेरी से क्या हम पाते हैं कि उपयोगकर्ता आईडी के लिए यह उस दिन तालिका में दर्ज किया गया पहला रिकॉर्ड है या नहीं।

2
जोड़ा संपादित
विचारों: 1
क्या यह आपके लिए काम है ???
जोड़ा लेखक Pranay Rana, स्रोत

5 उत्तर

तालिका में रिकॉर्ड की संख्या की गिनती करें

declare @count int
select @count=count(*) from table where 
      convert(Varchar,CalendarDate,111)=Convert(Varcar,GetDate(),111) 
      and [email protected]
if @count = 1
begin
   print 'first record'
end  

if the count is > 1 than its not first record and if 1 than its first record

1
जोड़ा

आप यहां विंडो किए गए फ़ंक्शन ROW_NUMBER() का उपयोग कर सकते हैं।

SELECT  UserID, 
        CalendarDate, 
        TaskName,
        ROW_NUMBER() OVER(PARTITION BY UserID, DATEADD(DAY, 0, DATEDIFF(DAY, 0, CalendarDate)) ORDER  BY CalendarDate, TaskName) AS RowNumber
FROM    T

या यदि आपके पासSQL-server2008 या बाद में है:

ROW_NUMBER() OVER(PARTITION BY UserID, CAST(CalendarDate AS DATE) ORDER  BY CalendarDate, TaskName) AS RowNumber

यह क्या कर रहा है उपयोगकर्ता आईडी और कैलेंडरडेट के प्रत्येक संयोजन को निर्दिष्ट करना है (समय हिस्से को हटाया गया है) यह तिथि के क्रम में अपने क्रमिक अनुक्रम (शेष समय शेष के साथ, फिर कार्य का नाम) है। पक्ष द्वारा <�कोड> ROW_NUMBER फ़ंक्शन को दोबारा शुरू करने के लिए कहता है (यानी नई तिथि या नई उपयोगकर्ता आईडी), फिर ऑर्डर द्वारा अनुभाग < कोड> ROW_NUMBER अनुक्रम को ऑर्डर कैसे करें। जैसे

1
जोड़ा
      Select count(*)  from table where userid =:userid and date =current_date

यदि आप दर्ज किए गए रिकॉर्ड को डालने के बाद जांचना चाहते हैं तो डालने से पहले डालने के बाद इसे चलाने से पहले या नहीं चलाया जाता है।

1
जोड़ा

यदि तालिका में उसी दिन एक उपयोगकर्ता के लिए एक से अधिक रिकॉर्ड होते हैं तो आपको समय के हिस्से को अनदेखा करना होगा।

Select Count(*) From <tableName> Whre convert(Varchar,CalendarDate,111)=Convert(Varcar,GetDate(),111)
1
जोड़ा

select case when ((select count(*) from table where convert(Varchar,calendardate,111)=Convert(Varchar,GetDate(),111) and userid=(your userid))>0) then 1 else 0 end

1
जोड़ा