Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 多栏mssql按日期的每日报告_Sql Server - Fatal编程技术网

Sql server 多栏mssql按日期的每日报告

Sql server 多栏mssql按日期的每日报告,sql-server,Sql Server,我想像这样显示每日报告 Fulltime Contract Casual 2018/06/04 1 0 0 2018/06/05 1 0 0 2018/06/06 0 1 1 2018/06/07 2 1 0 2018/06/08 1 1 1 2018/06/09 0 1 1 Date

我想像这样显示每日报告

          Fulltime Contract Casual
2018/06/04  1       0        0
2018/06/05  1       0         0
2018/06/06  0       1         1
2018/06/07  2       1         0
2018/06/08  1       1         1
2018/06/09  0       1         1
Date       Jobtype Meal
2018/06/04 Fulltime 1
2018/06/05 Fulltime 1
2018/06/06 Casual   1
2018/06/06 Contract 1
2018/06/07 Casual   1
2018/06/07 Contract 2
2018/06/08 Casual   1
2018/06/08 Contract 1
2018/06/08 Fulltime 1
2018/06/09 Casual   1
2018/06/09 Contract 1
但我所拥有的是这样的

          Fulltime Contract Casual
2018/06/04  1       0        0
2018/06/05  1       0         0
2018/06/06  0       1         1
2018/06/07  2       1         0
2018/06/08  1       1         1
2018/06/09  0       1         1
Date       Jobtype Meal
2018/06/04 Fulltime 1
2018/06/05 Fulltime 1
2018/06/06 Casual   1
2018/06/06 Contract 1
2018/06/07 Casual   1
2018/06/07 Contract 2
2018/06/08 Casual   1
2018/06/08 Contract 1
2018/06/08 Fulltime 1
2018/06/09 Casual   1
2018/06/09 Contract 1
我所尝试的:

select Date, Jobtype,'Meal'=(COUNT(Date)) 
from CanLog 
where WW BETWEEN '2018/06/06' and '2018/06/09' 
group by Date, Jobtype 
order by 1

不确定您的WW列来自何处。我以为是日期栏。如果不是,请调整

您需要使用UNPIVOT运算符并丢弃等于0的记录:

select u.date, u.jobtype, u.meal
from canlog
unpivot
(
  meal
  for jobtype in ( fulltime, contract, casual )
) u
where 
  [Date] between '2018/06/06' and '2018/06/09'
  and meal <> 0;

我想你可以试试这个:

SELECT Date,
       (SELECT COUNT(*) FROM CanLog as c WHERE c.WW = clog.WW AND jobtype = 'fulltime') AS Fulltime,
       (SELECT COUNT(*) FROM CanLog as c WHERE c.WW = clog.WW AND jobtype = 'contract') AS Contract,
       (SELECT COUNT(*) FROM CanLog as c WHERE c.WW = clog.WW AND jobtype = 'casual') AS Casual
FROM CanLog AS clog
WHERE WW BETWEEN '2018/06/06' AND '2018/06/09' 
GROUP BY Date, Jobtype 
ORDER BY Date
在括号内选择“计算一天中给定字符串的数量”。 如果你用小写字母和所有放大的字母书写,那没关系,sql不区分大小写

选择不同的日期, 从CanLog中选择COUNT作为c,其中c.WW=clog.WW,jobtype='fulltime'作为fulltime, 从CanLog中选择COUNT作为c,其中c.WW=clog.WW,jobtype='contract'作为contract, 从CanLog中选择COUNT*作为c,其中c.WW=clog.WW,jobtype='casual'作为casual 从CanLog到clog 其中WW介于“2018/06/06”和“2018/06/09”之间 按日期、作业类型分组
按日期下单

成功了,谢谢。我必须在选择的日期中添加不同的内容