2012-05-25 74 views

回答

1

選擇情況下((SELECT COUNT(*)from表 其中 轉換(VARCHAR,calendardate,111)=轉換(VARCHAR,GETDATE(),111) 和用戶ID =(你的用戶ID))> 0)then 1 else 0 end

1

製作計數

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 

如果計數> 1比它不是第一條記錄,如果1比第一記錄

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

如果你想後檢查插入輸入的記錄是第一個還是不是在插入之前插入else之後運行。

1

如果表格在同一天包含多個用戶記錄,則必須忽略時間部分。

Select Count(*) From <TableName> Whre convert(Varchar,CalendarDate,111)=Convert(Varcar,GetDate(),111) 
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-Server 2008或更高版本:

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

這是什麼東西做的是分配的用戶ID和CalendarDate的每個組合(刪除時間部分),它自己的遞增序列順序的日期(剩餘時間部分,然後是任務名稱)。 PARTITION BY告訴ROW_NUMBER函數何時從1開始(即新的日期或新的用戶ID),那麼ORDER BY部分告訴ROW_NUMBER如何排序序列。例如

相關問題