假設我們有一個以UserID,Calendar date和taskName爲列的表。Sql Query查找當天輸入的記錄是否是第一條記錄
請讓我知道,從sql查詢我們是否可以發現,對於一個用戶id是它在當天輸入的第一條記錄與否。記錄的數量的表格
假設我們有一個以UserID,Calendar date和taskName爲列的表。Sql Query查找當天輸入的記錄是否是第一條記錄
請讓我知道,從sql查詢我們是否可以發現,對於一個用戶id是它在當天輸入的第一條記錄與否。記錄的數量的表格
選擇情況下((SELECT COUNT(*)from表 其中 轉換(VARCHAR,calendardate,111)=轉換(VARCHAR,GETDATE(),111) 和用戶ID =(你的用戶ID))> 0)then 1 else 0 end
製作計數
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比第一記錄
Select count(*) from table where userid =:userid and date =current_date
如果你想後檢查插入輸入的記錄是第一個還是不是在插入之前插入else之後運行。
如果表格在同一天包含多個用戶記錄,則必須忽略時間部分。
Select Count(*) From <TableName> Whre convert(Varchar,CalendarDate,111)=Convert(Varcar,GetDate(),111)
您可以在此處使用窗口功能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
如何排序序列。例如
是爲你工作嗎? –