我在SQL中有这种情况,我需要显示dr_DRVNUM,DR_DRVNAME&多天工作相同轮班的司机的工作天数。
我在SQL中有这个代码,到目前为止我也尝试了不同的代码,但仍然没有运气
select dr_drvname, dr_drvnum, sh_wkdate
case when sh_drvnum = dr_drvnum and sh_wkshift = 'DAY' then count(sh_wkdate)
end
from driver, shift
我有一张桌子,我正在上传下表格图片的一部分,
DR_DRVNUM DR_DRVNAME SH_WKDATE SH_WKSHIFT
0001 Cooper, Randolph B. 15-NOV-07 DAY
0001 Cooper, Randolph B. 15-NOV-07 DAY
0001 Cooper, Randolph B. 15-NOV-07 DAY
0001 Cooper, Randolph B. 15-NOV-07 EVE
0001 Cooper, Randolph B. 15-NOV-07 EVE
0001 Cooper, Randolph B. 15-NOV-07 EVE
0001 Cooper, Randolph B. 15-NOV-07 NIG
0001 Cooper, Randolph B. 15-NOV-07 NIG
0001 Cooper, Randolph B. 15-NOV-07 NIG
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 DAY
0001 Cooper, Randolph B. 16-NOV-07 EVE
0001 Cooper, Randolph B. 16-NOV-07 EVE
答案 0 :(得分:0)
要理解你正在寻找的东西有点困难。将count
与其他字段一起使用时,您应该使用group by
子句。听起来你应该count
使用case
,如下所示:
select
dr_drvname,
dr_drvnum,
sh_wkdate,
count(case when sh_wkshift = 'DAY' then 1 end)
from driver d
left join shift s on s.sh_drvnum = d.dr_drvnum
group by
dr_drvname,
dr_drvnum,
sh_wkdate
顺便说一句 - 它使用outer join
加入驱动程序和移位表以返回所有驱动程序,即使它们没有移位。根据您所需的结果,您可能只使用inner join
。