Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中不同值的不同列_Sql_Sql Server_Database_Ssms - Fatal编程技术网

SQL中不同值的不同列

SQL中不同值的不同列,sql,sql-server,database,ssms,Sql,Sql Server,Database,Ssms,我编写了以下SQL查询: SELECT TOP (15) UserName, EventName, EventTime FROM AttendanceEvents WHERE UserName = 'Kareem' 其结果是: 如何将值分隔为事件的新列 我想要的输出是: UserName | Login | LogOut Kareem 2015-04-13 01:43 2015-04-13 13:44 Kareem 2015-04-18

我编写了以下SQL查询:

SELECT TOP (15) UserName, EventName, EventTime
FROM AttendanceEvents
WHERE UserName = 'Kareem'
其结果是:

如何将值分隔为事件的新列

我想要的输出是:

UserName | Login                | LogOut
Kareem    2015-04-13 01:43       2015-04-13 13:44
Kareem    2015-04-18 12:39       NULL
Kareem    2015-04-18 12:43       NULL
.
.
.
Kareem    2015-04-25 00:35       2015-04-25 05:21

通过取min使用条件聚合

select username,cast(eventtime as date) as d, min(case when eventname='IN' then eventtime end) as login,
min(case when eventname='OUT' then eventtime end) as logout
from tablename
group by username,cast(eventtime as date)

通过取min使用条件聚合

select username,cast(eventtime as date) as d, min(case when eventname='IN' then eventtime end) as login,
min(case when eventname='OUT' then eventtime end) as logout
from tablename
group by username,cast(eventtime as date)

正如预期的那样,它会生成正确的答案,但会保留所有其他值作为输入和输出,在我们的示例中,只显示每个用户的一个登录和注销值,而我需要所有这些值。修复方法是什么?请您修改您的预期输出,然后可能很容易理解@fa06。我希望它能被用户名分开。显示特定用户的所有输入和输出值,我也可以根据其他用户的所有结果更改我的查询?修改了答案,您只需要添加eventtime@Dawoodabas的日期部分!谢谢你,先生@fa06It产生了预期的正确答案,但是,保留了所有其他的INs和OUT值,在我们的例子中,每个用户只显示一个登录和注销值,而我需要所有这些值。修复方法是什么?请您修改您的预期输出,然后可能很容易理解@fa06。我希望它能被用户名分开。显示特定用户的所有输入和输出值,我也可以根据其他用户的所有结果更改我的查询?修改了答案,您只需要添加eventtime@Dawoodabas的日期部分!谢谢你,先生@fa06