【发布时间】:2018-03-14 03:32:46
【问题描述】:
我从事一个项目已经很长时间了,但我似乎不知道如何去做。我有一个循环代码和一个函数组合,但似乎无法获得我想看到的输出。
我的代码是这样的:
WITH CTE AS
(
SELECT 1 as Day
UNION ALL
SELECT Day+1 FROM CTE
WHERE Day < 15
), Name as (Select * from fn_logs(@Month, @Year,@date_from,@date_to)
)
SELECT CTE.Day,
CASE WHEN Name.DAtee != CTE.Day THEN Name.Fullname ELSE Name.Fullname END as Fullname,
CASE WHEN Name.DAtee != CTE.Day THEN ' ' ELSE Name.AMIN END as AMIN,
CASE WHEN Name.DAtee != CTE.Day THEN ' ' ELSE Name.AMOUT END as AMOUT,
CASE WHEN Name.DAtee != CTE.Day THEN ' ' ELSE Name.PMIN END as PMIN,
CASE WHEN Name.DAtee != CTE.Day THEN ' ' ELSE Name.PMOUT END as PMOUT
FROM CTE, Name
group by CTE.Day,Name.Fullname,Name.AMIN,Name.AMOUT,Name.PMIN,Name.PMOUT
Name.DAtee 获取日期的日期 我想要的输出是这样的:
Day Fullname AM-IN AM-OUT PM-IN PM-OUT
1 Ara Ast 8:00 12:00 12:03 5:00
2 Ara Ast 7:51 12:22 12:23 5:10
3 Ara Ast
1 Clara Est 8:01 12:12 12:25 5:07
2 Clara Est
3 Clara Est 7:41 12:02 12:15 5:00
我想显示单个员工记录的所有日期,如果没有记录日期,它将自动显示没有值。我得到的输出是这样的:
Day Fullname AM-IN AM-OUT PM-IN PM-OUT
1 Ara Ast 8:00 12:00 12:03 5:00
2 Ara Ast
3 Ara Ast
1 Ara Ast
2 Ara Ast 7:51 12:22 12:23 5:10
3 Ara Ast
1 Ara Ast
2 Ara Ast
3 Ara Ast
样本数据
INSERT INTO table1 (Fullname, Date, AMIN, AMOUT, PMIN, PMOUT) VALUES
('Ara Ast', '2/1/2018','8:00 AM','12:00 PM','1:00 PM','5:00 PM'),
('Ema Watson', '2/1/2018','8:00 AM','12:00 PM','1:00 PM','5:00 PM'),
('Ema Watson', '2/2/2018','8:00 AM','12:00 PM','1:00 PM','5:00 PM'),
('Ara Ast', '2/3/2018','8:00 AM','12:00 PM','1:00 PM','5:00 PM');
这些值似乎是重复的,只要值不等于日期,它就会打印 no 值。对不起,我还处于 sql server 编码的学习阶段。
提前致谢。
【问题讨论】:
-
你的数据库版本是多少? db2,mssql,mysql?
-
@D-Shih 我目前正在使用 SSMS 2016
-
请提供一些示例数据和他们的预期输出
-
@uzi INSERT INTO table1(全名、日期、AMIN、AMOUT、PMIN、PMOUT)值('Ara Ast'、'2/1/2018'、'8:00 AM'、'12 :00 PM','1:00 PM','5:00 PM'), ('Ema Watson', '2/1/2018','8:00 AM','12:00 PM','1 :00 PM','5:00 PM'), ('Ema Watson', '2/2/2018','8:00 AM','12:00 PM','1:00 PM','5 :00 PM'), ('Ara Ast', '2/3/2018','8:00 AM','12:00 PM','1:00 PM','5:00 PM'); --对于一些示例数据。我想要发生的输出包括在上面。与上述相同的模式。
-
在您的示例数据中,日期为
date,而问题中的日期为int。您如何确定第一天?
标签: sql sql-server stored-procedures sql-server-2016