提前感谢您的帮助。
您好,我有一个表AttendDB如下图所示它有很多混乱的数据。
Name Date Time Status
4900651 14/12/2015 7:52 I
4900651 14/12/2015 12:26 O
4900651 14/12/2015 12:27 I
4900651 14/12/2015 17:04 O
4900651 15/12/2015 7:51 I
4900651 15/12/2015 12:04 O
4900651 15/12/2015 12:08 I
4900651 15/12/2015 17:03 O
4900651 16/12/2015 7:50 I
4900651 16/12/2015 12:12 O
4900651 16/12/2015 12:13 I
4900651 16/12/2015 17:03 O
4900651 17/12/2015 7:52 I
4900651 17/12/2015 12:09 O
4900651 17/12/2015 12:35 I
4900651 17/12/2015 17:02 O
4900651 18/12/2015 7:54 I
4900651 18/12/2015 12:16 O
4900651 18/12/2015 12:17 I
4900651 18/12/2015 17:04 O
4900651 21/12/2015 7:48 I
4900651 22/12/2015 7:49 I
4900651 22/12/2015 12:11 O
4900651 22/12/2015 12:31 I
4900651 23/12/2015 7:46 I
4900651 23/12/2015 12:13 O
4900651 23/12/2015 12:13 I
4900651 23/12/2015 17:05 O
4900651 24/12/2015 7:49 I
4900651 24/12/2015 12:22 O
4900651 24/12/2015 12:23 I
4900651 24/12/2015 17:04 O
4900651 25/12/2015 7:54 I
4900651 25/12/2015 12:27 i
4900651 25/12/2015 12:28 O
4900651 25/12/2015 12:28 I
4900651 25/12/2015 17:04 O
4900651 26/12/2015 7:46 I
4900652 9/12/2015 11:28 I
4900652 11/12/2015 8:55 I
4900652 12/12/2015 16:10 I
4900652 12/12/2015 16:10 I
4900652 12/12/2015 16:10 I
4900652 12/12/2015 16:11 I
4900652 12/12/2015 16:12 I
4900652 12/12/2015 17:01 O
数据中每个名称条目都有很多数据,因为我的人力资源部门希望每个工作日保留6次员工"进出(午餐)进入(午餐后) - 出去(工作)进入(ot)-out (ot)我希望输出作为第一个输入,最后显示在下面
Name Date Time Status
4900651 14/12/2015 7:52 I
4900651 14/12/2015 17:04 O
4900651 15/12/2015 7:51 I
4900651 15/12/2015 17:03 O
4900651 16/12/2015 7:50 I
4900651 16/12/2015 17:03 O
4900651 17/12/2015 7:52 I
4900651 17/12/2015 17:02 O
4900652 14/12/2015 7:58 I
4900652 15/12/2015 17:04 O
如果我想查询文件格式如下,它可以做到吗? 感谢许多帮助
4900651,14122015,0752I
4900651,14122015,1704O
4900651,15122015,0751I
4900651,15122015,1703O
4900651,16122015,0750I
4900651,16122015,1703O
4900651,17122015,0752I
4900651,17122015,1702O
4900652,14122015,0758I
4900652,15122015,1704O
答案 0 :(得分:0)
您可以使用以下查询来获取所需的结果
SELECT NAME,
DATE,
CASE WHEN STATUS='I' THEN MIN(TIME)
ELSE
MAX(TIME)
END
TIME,
STATUS
FROM AttendDB GROUP BY NAME,DATE,STATUS
要生成文件,您可以使用以下代码
SELECT convert(varchar(20),NAME)+','+
convert(varchar(20),DATE)+','+
CASE WHEN STATUS='I' THEN convert(varchar(20),MIN(TIME))
ELSE
convert(varchar(20),MAX(TIME))
END +status output
FROM AttendDB GROUP BY NAME,DATE,STATUS
要将上述查询结果返回到文件中,您必须按照以下步骤进行操作
将以上查询保存在.sql文件中。
打开cmd并输入sqlcmd -U user_name -S server_name -i input file(.sql) -o (Output file path) C:\users\query.txt(example)
注意: - 输入文件包含查询。
完成上述所有步骤后,查询返回的结果将复制到query.txt文件中。这并不意味着我们只能使用.txt,我们也可以使用.csv等。