【问题标题】:Different Column for Distinct value in SQLSQL中不同值的不同列
【发布时间】:2018-10-08 04:33:05
【问题描述】:

我已经编写了这个 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

【问题讨论】:

    标签: sql sql-server database ssms


    【解决方案1】:

    通过取最小值来使用条件聚合

    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)
    

    【讨论】:

    • 它按预期产生了正确的答案,但保留了 IN 和 OUT 的所有其他值,在我们的例子中,每个用户只显示一个登录和注销值,而我需要所有这些值。解决方法是什么?
    • 能否请您修改您的预期输出,然后也许很容易理解
    • 完成@fa06。我希望它可以由用户名分开。显示具有所有输入和输出的特定用户的所有值,我可以用其他用户的所有结果来改变我的查询?
    • 修改了答案,你只需要添加事件时间的日期部分@DawoodAbbas
    • 太棒了!谢谢你,先生。 @fa06
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    相关资源
    最近更新 更多