Lat登录详细信息请查看sql查询 [英] Lat Login details check with sql query

查看:108
本文介绍了Lat登录详细信息请查看sql查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好frnds,

我正在更新用户表中的用户上次登录详细信息。我需要让用户最近10天没有登录。



 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 2013年12月11日



我需要输出如下

例如当前日期是2013年12月12日,最近10天

 User_Not_Login_Day_Count Last_Login_User_Count 
1 1
2 1
3 1
4 2
5 0
。 。
。 。
。 。
10 0

解决方案

以下是SQL:



 DECLARE @MyCounter  int ; 
SET @MyCounter = 1 ;

如果EXISTS

SELECT *
来自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)= @M yCounter
SET @MyCounter = @MyCounter + 1 ;
END

#LastLoginDetailsTempTable


您需要做的就是创建查询以获取最近10天记录的用户并将其从整个用户列表中排除。



实现这一目标的方法很少:



  1. 使用NOT IN(T-SQL) [ ^ ]子句
  2. 使用NOT EXISTS [ ^ ](带有EXISTS的子查询 [ ^ ])声明
  3. 使用 EXCEPT和INTERSECT [ ^ ]声明
  4. 使用正确的加入 [ ^ ] stetement





  SELECT  u。* 
FROM MyUsers AS u
WHERE UserID NOT IN
SELECT UserID
FROM 记录
WHERE LogDate BETWEEN DATEADD(d,-10,GETDATE()) AND GETDATE()







如需了解更多信息,请参阅: SQL连接的可视化表示 [ ^ ]


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

解决方案

Below is the SQL:

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


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



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[^]


这篇关于Lat登录详细信息请查看sql查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆