Click here to Skip to main content
15,886,199 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi frnds,
I am Updating User last Login details in User Table. I need to get user last 10 days whoever not logged in.

UserId           UserName           LastLoginDate
  1               Rajesh             10-Dec-2013
  2               Kumar              08-Dec-2013
  3               Vijay              08-Dec-2013
  4               Karthi             09-Dec-2013
  5               Prabhu             11-Dec-2013

I need output as follows
for example current date is 12-Dec-2013 for upto last 10 days
User_Not_Login_Day_Count      Last_Login_User_Count
          1                          1
          2                          1
          3                          1
          4                          2
          5                          0
          .                          .
          .                          .
          .                          .
          10                         0
Posted
Updated 12-Dec-13 0:22am
v3
Comments
Varsha Ramnani 12-Dec-13 5:56am    
What have you tried so far....
ZurdoDev 12-Dec-13 8:17am    
Where are you stuck?
Corporal Agarn 12-Dec-13 13:23pm    
Have you tried DATEADD?

Below is the SQL:

C#
DECLARE @MyCounter int;
SET @MyCounter = 1;

IF EXISTS
(
SELECT *
FROM tempdb.dbo.sysobjects
WHERE ID = OBJECT_ID(N'tempdb..#LastLoginDetailsTempTable')
)
BEGIN
DROP TABLE #LastLoginDetailsTempTable
END

CREATE TABLE #LastLoginDetailsTempTable(
User_Not_Login_Day_Count int, Last_Login_User_Count int)

WHILE @MyCounter < 11
BEGIN
INSERT INTO #LastLoginDetailsTempTable(User_Not_Login_Day_Count, Last_Login_User_Count)
	SELECT @MyCounter as User_Not_Login_Day_Count, COUNT(UserId) as Last_Login_User_Count
	FROM LoginDetails AS T1
	WHERE 
	  (SELECT MIN(DATEDIFF(day,LastLoginDate, GETDATE())) 
	   FROM LoginDetails AS T2
	   WHERE T2.UserID=T1.UserId) = @MyCounter
SET @MyCounter = @MyCounter + 1;
END

select * from #LastLoginDetailsTempTable
 
Share this answer
 
v2
All you need to do is to create query to fetch users which are logged by last 10 days and exclude them from entire list of users.

There are few ways to achieve that:

  1. using NOT IN (T-SQL)[^] clause
  2. using NOT EXISTS[^] (Subqueries with EXISTS[^]) statement
  3. using EXCEPT and INTERSECT[^] statement
  4. using proper JOIN[^] stetement


SQL
SELECT u.*
FROM MyUsers AS u
WHERE UserID NOT IN (
    SELECT UserID
    FROM Logs
    WHERE LogDate BETWEEN DATEADD(d,-10, GETDATE()) AND GETDATE()
)



For further information, please see: Visual Representation of SQL Joins[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900