Sql 不带聚合函数的Pivot临时表
这是一个临时表。我想将这些数据配对。我只需要以下输出:Sql 不带聚合函数的Pivot临时表,sql,sql-server,pivot-table,Sql,Sql Server,Pivot Table,这是一个临时表。我想将这些数据配对。我只需要以下输出: Date Time Mode ID 2017-01-01 13:00:00.0000000 3 10 2017-01-01 14:00:00.0000000 1 10 2017-01-01 15:00:00.0000000 3 10 2017-01-01 15:30:00
Date Time Mode ID
2017-01-01 13:00:00.0000000 3 10
2017-01-01 14:00:00.0000000 1 10
2017-01-01 15:00:00.0000000 3 10
2017-01-01 15:30:00.0000000 1 10
我需要将上述同一行的输入/输出时间更新为问题更新:
这取决于数据和数据类型/模式(如果表的名称是时间表):
- outerQuery仅选择in timesmode=3
- in innerQuery选择与所选in时间对应的下一个out时间,并仅返回第一个out时间。因为是按日期和时间订购的,所以应该是下一个。仅使用给定数据进行测试
SELECT time AS 'InTime(Mode-3)',
(SELECT TOP 1 time FROM timeTable
WHERE mode = 1
AND id = outerTable.id
AND date = outerTable.date
AND time > outerTable.time
ORDER BY date, time) AS 'OutTime(Mode-1)'
FROM timeTable AS outerTable
WHERE mode = 3
仅供参考:我使用了这个表模式
InTime(Mode-3) | OutTime(Mode-1)
---------------------------|---------------------------
13:00:00.0000000 | 14:00:00.0000000
15:00:00.0000000 | 15:30:00.0000000
我们需要比您提供的更多的信息来生成答案。如何确定产生预期输出的顺序和分区?所有日期和ID都相同,并且模式似乎被忽略。这与您想要的类似吗?首先是同一用户ID-10的临时表,时间显示为模式3表示打卡时间,模式1表示打卡时间。我只想将这些数据配对。对于打卡时间和打卡时间(模式3)打卡时间(模式1)13:00:00.0000000 14:00:00.0000000 15:00:00.0000000 15:30:00.0000000可能是真棒的副本!为我工作谢谢
InTime(Mode-3) | OutTime(Mode-1)
---------------------------|---------------------------
13:00:00.0000000 | 14:00:00.0000000
15:00:00.0000000 | 15:30:00.0000000
CREATE TABLE timeTable(
date DATE,
time TIME,
mode INTEGER,
id INTEGER
);