SQL我加了orderby排序就报错不是groupby表达式了老大看看是哪里的问题

SELECT

d.LOTID 批次编码,

d.FORMERQTY 批次原数量,

sum(d.LASTQTY) 批次现数量,

d.ISRECIPE 型号编码,

d.FGCODE 型号规格,

d.FGKIND 材质,

d.FGCODEVERSION 成品型号,

d.EVENTUSER 操作人,

d.WORKORDER 生产订单,

d.WORKSHOPNAME 车间名称,

d.LINE 产线编号,

d.LINENAME 产线名称,

d.MACHINECODE 设备编号,

d.MACHINENAME 设备名称,

d.FIXCODE 治具编号,

d.FIXNAME 治具名称,

d.BACKUP1 模号,

u.USERNAME 操作人,

CASE

WHEN

to_char(d.EVENTTIME,'hh24')>=8

then 

to_char(d.EVENTTIME,'yyyy-mm-dd')

WHEN

to_char(d.EVENTTIME,'hh24')<8

then 

to_char(d.EVENTTIME-1,'yyyy-mm-dd')

end 操作时间,

CASE

WHEN

to_char(d.EVENTTIME,'hh24')>=8 and to_char(d.EVENTTIME,'hh24')<20

then 

'白班'

WHEN

to_char(d.EVENTTIME,'hh24')>=20 or to_char(d.EVENTTIME,'hh24')<8

then 

'晚班'

end 班次

FROM DGB_PLOTHISTORY d

JOIN USERINFO u on d.EVENTUSER=u.USERID

where 1=1

AND TO_CHAR(d.EVENTTIME,'YYYY-MM-DD')>= ('2021-10-13')

AND TO_CHAR(d.EVENTTIME,'YYYY-MM-DD')<= ('2021-10-13')

group by

d.LOTID,d.FORMERQTY,d.LASTQTY,d.ISRECIPE,d.FGCODE,d.FGKIND,d.FGCODEVERSION,d.EVENTUSER,d.WORKORDER,d.WORKSHOPNAME,d.LINE,d.LINENAME,d.MACHINECODE,d.MACHINENAME,d.FIXCODE,d.FIXNAME,d.BACKUP1,u.USERNAME,

CASE

WHEN

to_char(d.EVENTTIME,'hh24')>=8

then 

to_char(d.EVENTTIME,'yyyy-mm-dd')

WHEN

to_char(d.EVENTTIME,'hh24')<8

then 

to_char(d.EVENTTIME-1,'yyyy-mm-dd')

end ,

CASE

WHEN

to_char(d.EVENTTIME,'hh24')>=8 and to_char(d.EVENTTIME,'hh24')<20

then 

'白班'

WHEN

to_char(d.EVENTTIME,'hh24')>=20 or to_char(d.EVENTTIME,'hh24')<8

then 

'晚班'

end

order by d.EVENTTIME desc

oracle的日期条件变成年月日时分秒的 要怎么写语句呢

a475547619 发布于 2021-10-13 14:38 (编辑于 2021-10-13 15:50)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
Moki_minLv5初级互助
发布于2021-10-13 14:48

d.EVENTTIME 这个字段不在select 以及 group by里面

最佳回答
0
尛鬼Lv5中级互助
发布于2021-10-13 14:50

order by 班次

  • a475547619 a475547619(提问者) 老哥 麻烦帮我看下我另一个问题也是sql的 我控件加了时分秒 然后我条件不知道怎么搞了 我那样写的都查不出数据
    2021-10-13 16:12 
最佳回答
0
呼呼哈哈Lv5初级互助
发布于2021-10-13 14:53

请参考此链接,关于group by 和 order by 同时使用的情况:https://blog.csdn.net/sinat_27115575/article/details/105864115

最佳回答
0
yzm467645Lv4见习互助
发布于2021-10-13 15:07

d.EVENTTIME 这个字段你需要select 

或者在group by里面添加d.EVENTTIME 这个字段

最佳回答
0
touyuan001Lv6中级互助
发布于2021-10-13 15:18(编辑于 2021-10-13 15:20)

SELECT d.lotid 批次编码,

       d.formerqty 批次原数量,

       SUM(d.lastqty) 批次现数量,

       d.isrecipe 型号编码,

       d.fgcode 型号规格,

       d.fgkind 材质,

       d.fgcodeversion 成品型号,

       d.eventuser 操作人,

       d.workorder 生产订单,

       d.workshopname 车间名称,

       d.line 产线编号,

       d.linename 产线名称,

       d.machinecode 设备编号,

       d.machinename 设备名称,

       d.fixcode 治具编号,

       d.fixname 治具名称,

       d.backup1 模号,

       u.username 操作人,

       CASE

         WHEN to_char(d.eventtime, 'hh24') >= 8 THEN

          to_char(d.eventtime, 'yyyy-mm-dd')

         WHEN to_char(d.eventtime, 'hh24') < 8 THEN

          to_char(d.eventtime - 1, 'yyyy-mm-dd')

       END 操作时间,

       CASE

         WHEN to_char(d.eventtime, 'hh24') >= 8 AND

              to_char(d.eventtime, 'hh24') < 20 THEN

          '白班'

         WHEN to_char(d.eventtime, 'hh24') >= 20 OR

              to_char(d.eventtime, 'hh24') < 8 THEN

          '晚班'

       END 班次,

       max(d.eventtime) as  eventtime  --加了这个

FROM dgb_plothistory d

JOIN userinfo u

ON d.eventuser = u.userid

WHERE 1 = 1

AND to_char(d.eventtime, 'YYYY-MM-DD') >= ('2021-10-13')

AND to_char(d.eventtime, 'YYYY-MM-DD') <= ('2021-10-13')

GROUP BY d.lotid,

         d.formerqty,

         --d.lastqty,    --注释了这个

         d.isrecipe,

         d.fgcode,

         d.fgkind,

         d.fgcodeversion,

         d.eventuser,

         d.workorder,

         d.workshopname,

         d.line,

         d.linename,

         d.machinecode,

         d.machinename,

         d.fixcode,

         d.fixname,

         d.backup1,

         u.username,

         CASE

           WHEN to_char(d.eventtime, 'hh24') >= 8 THEN

            to_char(d.eventtime, 'yyyy-mm-dd')

           WHEN to_char(d.eventtime, 'hh24') < 8 THEN

            to_char(d.eventtime - 1, 'yyyy-mm-dd')

         END,

         CASE

           WHEN to_char(d.eventtime, 'hh24') >= 8 AND

                to_char(d.eventtime, 'hh24') < 20 THEN

            '白班'

           WHEN to_char(d.eventtime, 'hh24') >= 20 OR

                to_char(d.eventtime, 'hh24') < 8 THEN

            '晚班'

         END

ORDER BY eventtime DESC

最佳回答
0
shirokoLv6资深互助
发布于2021-10-13 15:23

你已经group了,group完都没有这个字段了,还靠这个字段order?

  • 7关注人数
  • 510浏览人数
  • 最后回答于:2021-10-13 15:50
    请选择关闭问题的原因
    确定 取消
    返回顶部