首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server创建动态列Login1、Login2、Login3

Server创建动态列Login1、Login2、Login3
EN

Stack Overflow用户
提问于 2015-04-06 22:35:20
回答 1查看 83关注 0票数 2

我需要一个SQL语句来读取这个表:

这将返回一天中所有登录的动态列,并按EmployeeId分组。

代码语言:javascript
复制
EmployeeId, Login1, Logoff1, Login2, Logoff2, Login3, Logoff3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-06 23:27:53

试验数据

代码语言:javascript
复制
DECLARE @TABLE TABLE (EmployeeID INT, LoginTime DATETIME , LogoffTime DATETIME)
INSERT INTO @TABLE VALUES 
( 49  , '2015-04-07 00:16:22.307' , '2015-04-07 00:16:30.307'),
( 49  , '2015-04-07 00:17:22.307' , '2015-04-07 00:17:39.307'),
( 8   , '2015-04-06 00:16:22.307' , '2015-04-06 00:16:30.307'),
( 8   , '2015-04-07 00:16:22.307' , '2015-04-07 00:16:28.307'),
( 55  , '2015-04-05 00:16:22.307' , '2015-04-07 00:16:22.307')

查询

代码语言:javascript
复制
SELECT * 
FROM (
SELECT EmployeeID
     ,Dates
     , Login_Logoff + '_' 
      + CAST(ROW_NUMBER() OVER 
             (PARTITION BY EmployeeID,Login_Logoff 
                   ORDER BY Dates ASC) AS NVARCHAR(10)) AS [Login_Logoff]
FROM @TABLE
 UNPIVOT (Dates FOR Login_Logoff IN (LoginTime,LogoffTime))up
 ) T
 PIVOT (MAX(Dates)
        FOR Login_Logoff
        IN (LoginTime_1,LogoffTime_1,LoginTime_2,LogoffTime_2))p

结果

代码语言:javascript
复制
╔════════════╦═════════════════════════╦═════════════════════════╦═════════════════════════╦═════════════════════════╗
║ EmployeeID ║       LoginTime_1       ║      LogoffTime_1       ║       LoginTime_2       ║      LogoffTime_2       ║
╠════════════╬═════════════════════════╬═════════════════════════╬═════════════════════════╬═════════════════════════╣
║          8 ║ 2015-04-06 00:16:22.307 ║ 2015-04-06 00:16:30.307 ║ 2015-04-07 00:16:22.307 ║ 2015-04-07 00:16:28.307 ║
║         49 ║ 2015-04-07 00:16:22.307 ║ 2015-04-07 00:16:30.307 ║ 2015-04-07 00:17:22.307 ║ 2015-04-07 00:17:39.307 ║
║         55 ║ 2015-04-05 00:16:22.307 ║ 2015-04-07 00:16:22.307 ║ NULL                    ║ NULL                    ║
╚════════════╩═════════════════════════╩═════════════════════════╩═════════════════════════╩═════════════════════════╝
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29480803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档