0

目前我正在尝试执行此查询。但得到一个错误。请找出此查询中的错误。我在尝试执行它时遇到错误。无条件错误和硬日期(类似的东西)。我想在这些条件下从我的数据库中提取全部数据。”。

 select

dilbo.warehouse_id
, count(distinct dilbo.mamc)
, sum(dilbo.on_hand_quantity)
, dilbo.inventory_group_id
, to_char(dilbo.snapshot_day, 'MM')
, to_char(dilbo.snapshot_day, 'DD')


,CASE WHEN 
p.PKG_WEIGHT*DECODE(p.PKG_WEIGHT_U, 'pounds', 0.45359, 1.0) > 11.2 
OR GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 60.1
OR p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)-GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0))-LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 30.0 
OR LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 31.2 
THEN CASE 
WHEN p.IS_WHITE_GLOVE_REQUIRED = 'Y' 
THEN 'HB' 
ELSE 'NS' END 
ELSE 'S' 
END AS Sort

,CASE WHEN 
p.PKG_WEIGHT*DECODE(p.PKG_WEIGHT_U, 'pounds', 0.45359, 1.0) > 60.1
OR GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 59 
OR p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)-GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0))-LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 59.0 
OR LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 44.89 
THEN 'NonX' 
ELSE 'XE'
END as SubSort



from d_owner dilbo, d_items p, d_mamcs dmp

where
dilbo.region_id = 2
and dilbo.warehouse_id = 'STR1'
and dilbo.snapshot_day between to_date('20120701', 'YYYYMMDD') and to_date('20130205', 'YYYYDDMM')
and dilbo.mamc = p.mamc
and to_char(dilbo.snapshot_day, 'DD') in ('28', '30', '31')
and dilbo.mamc = dmp.mamc

group by
dilbo.warehouse_id
, dilbo.inventory_group_id
, to_char(dilbo.snapshot_day, 'MM')
, to_char(dilbo.snapshot_day, 'DD')



,CASE WHEN 
p.PKG_WEIGHT*DECODE(p.PKG_WEIGHT_U, 'pounds', 0.45359, 1.0) > 11.2  
OR GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 59 
OR p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)-GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0))-LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 59 
OR LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 44 
THEN CASE 
WHEN p.IS_REQUIRED = 'Y' 
THEN 'ASP' 
ELSE 'CD' END 
ELSE 'D' 
END 

,CASE WHEN 
p.PKG_WEIGHT*DECODE(p.PKG_WEIGHT_U, 'pounds', 0.45359, 1.0) > 11.2 
OR GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 60
OR p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)+p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)-GREATEST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0))-LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 30 
OR LEAST(p.PKG_LENGTH*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Width*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0),p.PKG_Height*DECODE(p.PKG_DIM_U, 'inches', 2.54, 1.0)) > 31.0 
THEN 'NonX' 
ELSE 'XE'
END 
4

1 回答 1

1

GROUP BY 子句中的列列表必须与 SELECT 中的非聚合列列表完全匹配。

我可以看到 GROUP BY 中倒数第二个 CASE 语句中的某些值与 SELECT 中的值不完全相同。

在您拥有的选择中

WHEN p.IS_WHITE_GLOVE_REQUIRED = 'Y' THEN 'HB' ELSE 'NS' END ELSE 'S'

在 GROUP BY 中,您有:

WHEN p.IS_REQUIRED = 'Y' THEN 'ASP' ELSE 'CD' END ELSE 'D'

于 2013-09-11T21:29:01.357 回答