如何在SQLServer中使用sql合并同一行? NIK输入/输出日期 10026 1 2015-07-07 14:15:09.000 10026 0 2015-07-06 14:16:28.000 10026 1 2015-07-06 14:16:37.000 10026 0 2015-07-08 05:26:17.000
我希望得到如下结果: NIK IN/OUT DATE 10026 1 2015-07-07 14:15:09.000 10026 0 2015-07-06 14:16:28.000 10026 1 2015-07-06 14:16:37.000 10026 0 2015-07-08 05:26:17.000 NIK日期输入日期输出 10026 2015-07-07 14:15:09.000空 10026 2015-07-06 14:16:28.000 2015-07-06 14:16:37.000 10026零2015-07-08 05:26:17.000 如何在sql server中使用sql基于字段(输入输出)合并同一行 NIK DATE IN DATE OUT 10026 2015-07-07 14:15:09.000 null 10026 2015-07-06 14:16:28.000 2015-07-06 14:16:37.000 10026 null 2015-07-08 05:26:17.000 输出:-如何在SQLServer中使用sql合并同一行? NIK输入/输出日期 10026 1 2015-07-07 14:15:09.000 10026 0 2015-07-06 14:16:28.000 10026 1 2015-07-06 14:16:37.000 10026 0 2015-07-08 05:26:17.000,sql,sql-server,Sql,Sql Server,我希望得到如下结果: NIK IN/OUT DATE 10026 1 2015-07-07 14:15:09.000 10026 0 2015-07-06 14:16:28.000 10026 1 2015-07-06 14:16:37.000 10026 0 2015-07-08 05:26:17.000 NIK日期输入日期输出 10026 2015-07-07 14:15:09.000空
我认为,您的数据中可能存在0/1的问题。为什么
2015-07-06 14:16:37.000
有1并记录为日期,但2015-07-07 14:15:09.000
也有1并记录为日期?为什么要将其标记为MySQL?为什么假设每天只有一个输入/输出组合?即使没有,也需要为特定日期和NIK获取Min-DateIn和Max-Dateout,然后需要生成pivot。但若最终用户希望在一整天之外显示,那个么上述查询将不起作用。但这一要求值得商榷。
Set Nocount On;
Declare @test Table
(
NIK Int
,InOut Bit
,Date Datetime
)
Insert Into @test(NIK,InOut,Date) Values
(10026,1,'2015-07-07 14:15:09.000')
,(10026,0,'2015-07-06 14:16:28.000')
,(10026,1,'2015-07-06 14:16:37.000')
,(10026,0,'2015-07-08 05:26:17.000')
Select t.NIK,[0] As DateIn,[1] As DateOut
From (
Select t.NIK
,t.InOut
,Max(t.Date) As Date
,Dateadd(D, 0, Datediff(D, 0, t.Date)) As OnlyDate
From @test As t
Group BY Dateadd(D, 0, Datediff(D, 0, t.Date))
,t.NIK
,t.InOut
) As t
PIVOT
(
Min(t.Date)
For InOut In ([0],[1])
) As t