Sql Interogare pentru a afla dacă înregistrarea introdusă este prima înregistrare sau nu în acea zi

Să presupunem că avem un tabel cu ID de utilizator, data calendarului și taskName ca coloane.

Spuneți-mi că de la sql Întrebarea dacă putem găsi că pentru un id de utilizator este prima înregistrare introdusă în tabel în acea zi sau nu.

2
este că locul de muncă pentru tine ???
adăugat autor Pranay Rana, sursa

5 răspunsuri

Efectuați numărarea numărului de înregistrare în tabel

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
adăugat

Puteți utiliza funcția fereastră ROW_NUMBER() aici.

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

Sau dacă aveți SQL Server 2008 sau o versiune ulterioară:

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

Ceea ce face aceasta este atribuirea fiecărei combinații de UserID și CalendarDate (cu porțiunea de timp eliminată) este o secvență incrementală proprie în ordinea datei (cu restul de timp, apoi cu numele sarcinii). PARTITION BY indică funcția ROW_NUMBER atunci când începe din nou la 1 (adică data nouă sau noul ID utilizator), apoi ORDER BY cod> ROW_NUMBER cum să comandați secvența. de exemplu.

1
adăugat
      Select count(*)  from table where userid =:userid and date =current_date

Dacă doriți să verificați după introducerea acelei înregistrări introduse mai întâi sau nu decât executați acest lucru după ce introduceți altceva înainte de inserare.

1
adăugat

Dacă tabela conține mai multe înregistrări pentru un utilizator în aceeași zi, trebuie să ignorați partea de timp.

Select Count(*) From <tableName> Whre convert(Varchar,CalendarDate,111)=Convert(Varcar,GetDate(),111)
1
adăugat

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
adăugat