Sql oracle中的Group by无法使用max
我在试图让我的团队在Oracle工作时遇到问题 我的剧本如下Sql oracle中的Group by无法使用max,sql,oracle,Sql,Oracle,我在试图让我的团队在Oracle工作时遇到问题 我的剧本如下 Select DISTINCT dc.despatch_num as ShipmentReference, sh.delivery_name as Name, dc.address1 as DeliveryAddress1, dc.address2 as DeliveryAddress2, dc.address3 as City, dc.address5 as County, d
Select
DISTINCT dc.despatch_num as ShipmentReference,
sh.delivery_name as Name,
dc.address1 as DeliveryAddress1,
dc.address2 as DeliveryAddress2,
dc.address3 as City,
dc.address5 as County,
dc.POSTCODE as Postcode,
dc.country_code as Country,
sh.inv_contact_telephone_1 as TelephoneNumber,
sh.inv_contact_email as email,
ph.package_num as Numberofpackages,
ph.package_id as PackageReference,
ph.weight as PackageWeight,
'Kilos' as WeightUnit,
max(pro.length) as Length
from
sales_header sh
left join customer cu on sh.customer_account = cu.customer_account
left join sales_item si on sh.sales_document_num = si.sales_document_num
left join customer_address ca on cu.customer_account = ca.customer_account
left join additional_charge ac on sh.sales_document_num = ac.sales_document_num and sh.order_type = ac.order_type
left join despatch_header dc on ac.despatch_num = dc.despatch_num
left join package_header ph on dc.despatch_num = ph.despatch_num
left join product pro on si.product_code = pro.product_code
WHERE sh.customer_name <> sh.Delivery_name and rownum <= 100 and dc.country_code ='FR';
group by DISTINCT dc.despatch_num,
sh.delivery_name,
dc.address1,
dc.address2,
dc.address3,
dc.address5,
dc.POSTCODE,
dc.country_code,
sh.inv_contact_telephone_1,
sh.inv_contact_email,
ph.package_num,
ph.package_id,
ph.weight,
'Kilos',
选择
不同的dc.发货编号作为发货参考,
sh.U名称作为名称,
dc.address1作为交货地址1,
dc.address2作为交货地址2,
dc.3作为城市,
dc.5作为县,
dc.POSTCODE作为邮政编码,
dc.country_代码为国家/地区,
sh.inv\u联系人\u电话\u 1作为电话号码,
sh.inv\u联系方式\u电子邮件,
ph.package_num作为Numberofpackages,
ph.package_id作为PackageReference,
ph.重量作为包装重量,
“千克”作为重量单位,
最大(专业长度)作为长度
从…起
销售部主管sh
左加入sh.customer\u账户上的cu客户=cu.customer\u账户
左联合销售\项目si在sh.sales\u document\u num=si.sales\u document\u num上
左加入cu上的客户地址ca.customer\U account=ca.customer\U account
左连接sh.sales\u document\u num=ac.sales\u document\u num和sh.order\u type=ac.order\u type上的附加费用ac
左连接发送头dc on ac.DISPATCH\U num=dc.DISPATCH\U num
dc上的左连接包头ph.DISPATCH\U num=ph.DISPATCH\U num
左键连接si.product\U代码=pro.product\U代码上的product pro
其中sh.customer\u name sh.Delivery\u name和rownum代码存在多个问题
以下代码应该适合您(有关详细信息,请参阅内联注释)
Select——删除了DISTINCT,因为它在分组查询中不相关
dc.发货编号作为发货参考,
sh.U名称作为名称,
dc.address1作为交货地址1,
dc.address2作为交货地址2,
dc.3作为城市,
dc.5作为县,
dc.POSTCODE作为邮政编码,
dc.country_代码为国家/地区,
sh.inv\u联系人\u电话\u 1作为电话号码,
sh.inv\u联系方式\u电子邮件,
ph.package_num作为Numberofpackages,
ph.package_id作为PackageReference,
ph.重量作为包装重量,
“千克”作为重量单位,
最大(专业长度)作为长度
从…起
销售部主管sh
左加入sh.customer\u账户上的cu客户=cu.customer\u账户
左联合销售\项目si在sh.sales\u document\u num=si.sales\u document\u num上
左加入cu上的客户地址ca.customer\U account=ca.customer\U account
左连接sh.sales\u document\u num=ac.sales\u document\u num和sh.order\u type=ac.order\u type上的附加费用ac
左连接发送头dc on ac.DISPATCH\U num=dc.DISPATCH\U num
dc上的左连接包头ph.DISPATCH\U num=ph.DISPATCH\U num
左键连接si.product\U代码=pro.product\U代码上的product pro
其中sh.customer\u name sh.Delivery\u name
和rownum您的代码存在多个问题
以下代码应该适合您(有关详细信息,请参阅内联注释)
Select——删除了DISTINCT,因为它在分组查询中不相关
dc.发货编号作为发货参考,
sh.U名称作为名称,
dc.address1作为交货地址1,
dc.address2作为交货地址2,
dc.3作为城市,
dc.5作为县,
dc.POSTCODE作为邮政编码,
dc.country_代码为国家/地区,
sh.inv\u联系人\u电话\u 1作为电话号码,
sh.inv\u联系方式\u电子邮件,
ph.package_num作为Numberofpackages,
ph.package_id作为PackageReference,
ph.重量作为包装重量,
“千克”作为重量单位,
最大(专业长度)作为长度
从…起
销售部主管sh
左加入sh.customer\u账户上的cu客户=cu.customer\u账户
左联合销售\项目si在sh.sales\u document\u num=si.sales\u document\u num上
左加入cu上的客户地址ca.customer\U account=ca.customer\U account
左连接sh.sales\u document\u num=ac.sales\u document\u num和sh.order\u type=ac.order\u type上的附加费用ac
左连接发送头dc on ac.DISPATCH\U num=dc.DISPATCH\U num
dc上的左连接包头ph.DISPATCH\U num=ph.DISPATCH\U num
左键连接si.product\U代码=pro.product\U代码上的product pro
其中sh.customer\u name sh.Delivery\u name
和rownum通过
从组中删除DISTINCT
和Kilos'
。另外,SELECT DISTINCT
几乎从未与groupby
一起使用。已删除它们,但仍收到相同的错误。同时删除第一个DISTINCT。因为您显示的是按分组的数据,所以它无论如何只会显示不同的值'FR'代码>删除代码>和'Kilos',
删除,
谢谢大家尝试从分组中删除不同的和'Kilos'
。另外,SELECT DISTINCT
几乎从未与groupby
一起使用。已删除它们,但仍收到相同的错误。同时删除第一个DISTINCT。因为您显示的是按分组的数据,所以它无论如何只会显示不同的值'FR'代码>删除代码>和'Kilos',
删除,
谢谢大家尝试一下
Select --removed DISTINCT as it is irrelevant in GROUP BY queries
dc.despatch_num as ShipmentReference,
sh.delivery_name as Name,
dc.address1 as DeliveryAddress1,
dc.address2 as DeliveryAddress2,
dc.address3 as City,
dc.address5 as County,
dc.POSTCODE as Postcode,
dc.country_code as Country,
sh.inv_contact_telephone_1 as TelephoneNumber,
sh.inv_contact_email as email,
ph.package_num as Numberofpackages,
ph.package_id as PackageReference,
ph.weight as PackageWeight,
'Kilos' as WeightUnit,
max(pro.length) as Length
from
sales_header sh
left join customer cu on sh.customer_account = cu.customer_account
left join sales_item si on sh.sales_document_num = si.sales_document_num
left join customer_address ca on cu.customer_account = ca.customer_account
left join additional_charge ac on sh.sales_document_num = ac.sales_document_num and sh.order_type = ac.order_type
left join despatch_header dc on ac.despatch_num = dc.despatch_num
left join package_header ph on dc.despatch_num = ph.despatch_num
left join product pro on si.product_code = pro.product_code
WHERE sh.customer_name <> sh.Delivery_name
and rownum <= 100
and dc.country_code ='FR' -- removed semi-colon from here
group by dc.despatch_num, --removed DISTINCT from here as it is INVALID use
sh.delivery_name,
dc.address1,
dc.address2,
dc.address3,
dc.address5,
dc.POSTCODE,
dc.country_code,
sh.inv_contact_telephone_1,
sh.inv_contact_email,
ph.package_num,
ph.package_id,
ph.weight; --removed 'Kilos' from end