【发布时间】:2013-12-14 16:22:33
【问题描述】:
我在 sql 数据库 [dbo].[ClockInClockOut] 中有一个包含 3 列的表:[UserId]、ClockInClockOutTypeId]、[CreatedDate]。我需要显示像
这样的数据UserName CreatedDate TimeIn TimeOut
abc 12/31/2013 13:19:51 13:22:37
xyz 1/31/2013 14:19:51 15:19:51
我在 sql 中这样做:
select u.[UserName],
CONVERT(VARCHAR(20), c.[CreatedDate], 101) as [Date],
CASE WHEN c.[ClockInClockOutTypeId]=1 and THEN CONVERT(VARCHAR(20), c.[CreatedDate], 108) ELSE null END as InTime,
CASE WHEN c.[ClockInClockOutTypeId]=2 THEN CONVERT(VARCHAR(20), c.[CreatedDate], 108) ELSE null END as OutTime
from [ClockInClockOut] as c
inner join [UserProfile] as u on c.UserId = u.[UserId]
我得到了这个结果:
UserName CreatedDate TimeIn TimeOut
abc 12/31/2013 13:19:51 null
abc 12/31/2013 null 14:19:51
在第 1 行第 3 列时间可以,但我需要在第 4 列而不是在第 4 列的第 2 行超时。
【问题讨论】:
-
您有一个名为
ClockInClockOut的表,位于一个身份不明的数据库中(名称无关紧要)。让你的术语直截了当;如果您将表称为数据库,您将混淆您自己和您尝试寻求帮助的每个人。