Mysql 分组依据+;最大值(日期)
我试图遵循提供的解决方案,但在我的情况下不起作用 1) 这是我尝试的第一个解决方案,但出现了以下错误: SQL错误(1064):您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用接近“.SKU,maxdate”的语法,其中inv.outbound\u date不为空 和第26行的co.system='Magent' 2) 这是我尝试的第二个解决方案,但是如果我进行简单的分组,结果的数量与结果的数量不匹配Mysql 分组依据+;最大值(日期),mysql,group-by,max,Mysql,Group By,Max,我试图遵循提供的解决方案,但在我的情况下不起作用 1) 这是我尝试的第一个解决方案,但出现了以下错误: SQL错误(1064):您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用接近“.SKU,maxdate”的语法,其中inv.outbound\u date不为空 和第26行的co.system='Magent' 2) 这是我尝试的第二个解决方案,但是如果我进行简单的分组,结果的数量与结果的数量不匹配 SELECT inv.inventory_id, pu
SELECT
inv.inventory_id,
pu.purchase_order_id,
inv.inbound_date,
inv.outbound_date,
siz.SKU,
cat.name,
pu.cogs,
pu.cogs_currency,
co.system,
co.order_number
FROM ERP_INVENTORY_ITEM inv
INNER JOIN ERP_PROD_PRODUCT_SIZES siz ON siz.ID = inv.prod_index
INNER JOIN ERP_PURCHASE_ITEM pu ON pu.`Index` = inv.ERP_PURCHASE_ITEM_Index
INNER JOIN ERP_PROD_CATALOG cat ON cat.`index` = siz.`SKUf ID`
INNER JOIN ERP_CUSTOMER_ORDER_ITEMS_2 coi ON coi.`index` = inv.ERP_CUSTOMER_ORDER_ITEMS_2_index_outbound
INNER JOIN ERP_CUSTOMER_ORDER co ON co.`index` = coi.ERP_CUSTOMER_ORDER_index
WHERE inv.outbound_date IS NOT NULL
AND inv.inbound_date =
(
SELECT MAX(inv2.inbound_date)
FROM ERP_INVENTORY_ITEM inv2
INNER JOIN ERP_PROD_PRODUCT_SIZES siz2 ON siz2.ID=inv2.prod_index
WHERE siz2.SKU=siz.SKU
)
AND co.system='Magento'
AND inv.item_warehouse='KL'
AND pu.cogs IS NOT NULL
AND LOCATE('-',co.order_number)=FALSE
AND siz.SKU IN
(
'SPRA0148002R0303-54',
'SRYB2658004P0303-50',
'SOAK0632006R0105-55',
'SRYB0372080R0707-50',
'SRYB0226048P1406-58',
'SRBJ0030048R1406-50',
'SOAK0281046R0203-70',
'SRYB2671020R1406-58',
'SVAL0170005R0101-51',
'SOAK0091035R0506-56',
'SMAU0038046P1205-71',
'GVER054500501-53',
'GRYB009302401-52',
'AC05-88N0275Z00000Z',
'BF02-87N0400N12518Z',
'BF02-87N1000N07502Z',
'GCAR019705306-54',
'PF01-86Z0000Z00000Z',
'BBT05-86N0150N20018Z',
'AC11-87N0425Z00000Z',
'BF01-86N0350Z00000Z',
'PUV03-87N0700N07516Z',
'BF02-87N0100N12518Z',
'BF02-87N0750N22517Z',
'BF02-87N0550N12509Z',
'AC02-85N0300Z00000Z',
'PC02-86N0650Z00000Z',
'AC06-86N0550N22518Z',
'BM03-87N0250N17512Z',
'CV53-86N0300Z00000Z',
'PUV03-87N0550N17509Z',
'BBT04-86N0250N25002Z',
'BI20-86Z0000Z00000Z',
'SGMV0612005R0101-00',
'VE04-86N0400Z00000Z',
'GSFD020111-59',
'FL17-86N0225Z00000Z',
'FL18-86N0325Z00000Z',
'GMC02-86N0375Z00000Z',
'BE06-86N0175Z00000Z',
'PM01-86Z0000Z00000Z',
'PM02-86N0450Z00000Z',
'GMC55-87N0650Z00000Z',
'GCN05-87N0350Z00000Z',
'GMC01-86N0300Z00000Z'
)
ORDER BY siz.SKU;
任何帮助都将不胜感激
Thx.这是我迄今为止“几乎”有效的解决方案:没有出现错误,但我得到13个结果,而不是17个。
如果我删除最后一个
内部连接
,并仅通过siz.SKU添加一个组
谢谢
SELECT
inv.inventory_id,
pu.purchase_order_id,
inv.inbound_date,
inv.outbound_date,
siz.SKU,
cat.name,
pu.cogs,
pu.cogs_currency,
co.system,
co.order_number
FROM ERP_INVENTORY_ITEM inv
INNER JOIN ERP_PROD_PRODUCT_SIZES siz ON siz.ID = inv.prod_index
INNER JOIN ERP_PURCHASE_ITEM pu ON pu.`Index` = inv.ERP_PURCHASE_ITEM_Index
INNER JOIN ERP_PROD_CATALOG cat ON cat.`index` = siz.`SKUf ID`
INNER JOIN ERP_CUSTOMER_ORDER_ITEMS_2 coi ON coi.`index` = inv.ERP_CUSTOMER_ORDER_ITEMS_2_index_outbound
INNER JOIN ERP_CUSTOMER_ORDER co ON co.`index` = coi.ERP_CUSTOMER_ORDER_index
INNER JOIN (
SELECT siz2.SKU AS SKU_2, MAX(inv2.inbound_date) AS maxdate
FROM ERP_INVENTORY_ITEM inv2
INNER JOIN ERP_PROD_PRODUCT_SIZES siz2 ON siz2.ID = inv2.prod_index
GROUP BY siz2.SKU
) AS max_val ON siz.SKU = max_val.SKU_2 AND inv.inbound_date = max_val.maxdate
WHERE inv.outbound_date IS NOT NULL
AND co.system='Magento'
AND inv.item_warehouse='KL'
AND pu.cogs IS NOT NULL
AND LOCATE('-',co.order_number)=FALSE
AND siz.SKU IN
(
'SPRA0148002R0303-54',
'SRYB2658004P0303-50',
'SOAK0632006R0105-55',
'SRYB0372080R0707-50',
'SRYB0226048P1406-58',
'SRBJ0030048R1406-50',
'SOAK0281046R0203-70',
'SRYB2671020R1406-58',
'SVAL0170005R0101-51',
'SOAK0091035R0506-56',
'SMAU0038046P1205-71',
'GVER054500501-53',
'GRYB009302401-52',
'AC05-88N0275Z00000Z',
'BF02-87N0400N12518Z',
'BF02-87N1000N07502Z',
'GCAR019705306-54',
'PF01-86Z0000Z00000Z',
'BBT05-86N0150N20018Z',
'AC11-87N0425Z00000Z',
'BF01-86N0350Z00000Z',
'PUV03-87N0700N07516Z',
'BF02-87N0100N12518Z',
'BF02-87N0750N22517Z',
'BF02-87N0550N12509Z',
'AC02-85N0300Z00000Z',
'PC02-86N0650Z00000Z',
'AC06-86N0550N22518Z',
'BM03-87N0250N17512Z',
'CV53-86N0300Z00000Z',
'PUV03-87N0550N17509Z',
'BBT04-86N0250N25002Z',
'BI20-86Z0000Z00000Z',
'SGMV0612005R0101-00',
'VE04-86N0400Z00000Z',
'GSFD020111-59',
'FL17-86N0225Z00000Z',
'FL18-86N0325Z00000Z',
'GMC02-86N0375Z00000Z',
'BE06-86N0175Z00000Z',
'PM01-86Z0000Z00000Z',
'PM02-86N0450Z00000Z',
'GMC55-87N0650Z00000Z',
'GCN05-87N0350Z00000Z',
'GMC01-86N0300Z00000Z'
)
ORDER BY siz.SKU
;
将别名
max
更改为其他名称,因为max
是保留字<代码>)因为max USING可能是to)因为max\u val USING
正如错误消息所说,问题出在.SKU
上。删除表名(siz2
),使用(SKU,maxdate)@Abhik Chakraborty将其设置为,但我遇到了相同的错误。@axiac我删除了别名,现在出现了一个新错误:SQL错误(1054):from子句'中的未知列'maxdate'注意,siz2.SKU
是派生查询的一部分,因此您需要使用用于派生查询的别名(如GROUP siz2.SKU)作为max_val USING(max_val.SKU,max_val.maxdate)
SELECT
inv.inventory_id,
pu.purchase_order_id,
inv.inbound_date,
inv.outbound_date,
siz.SKU,
cat.name,
pu.cogs,
pu.cogs_currency,
co.system,
co.order_number
FROM ERP_INVENTORY_ITEM inv
INNER JOIN ERP_PROD_PRODUCT_SIZES siz ON siz.ID = inv.prod_index
INNER JOIN ERP_PURCHASE_ITEM pu ON pu.`Index` = inv.ERP_PURCHASE_ITEM_Index
INNER JOIN ERP_PROD_CATALOG cat ON cat.`index` = siz.`SKUf ID`
INNER JOIN ERP_CUSTOMER_ORDER_ITEMS_2 coi ON coi.`index` = inv.ERP_CUSTOMER_ORDER_ITEMS_2_index_outbound
INNER JOIN ERP_CUSTOMER_ORDER co ON co.`index` = coi.ERP_CUSTOMER_ORDER_index
INNER JOIN (
SELECT siz2.SKU AS SKU_2, MAX(inv2.inbound_date) AS maxdate
FROM ERP_INVENTORY_ITEM inv2
INNER JOIN ERP_PROD_PRODUCT_SIZES siz2 ON siz2.ID = inv2.prod_index
GROUP BY siz2.SKU
) AS max_val ON siz.SKU = max_val.SKU_2 AND inv.inbound_date = max_val.maxdate
WHERE inv.outbound_date IS NOT NULL
AND co.system='Magento'
AND inv.item_warehouse='KL'
AND pu.cogs IS NOT NULL
AND LOCATE('-',co.order_number)=FALSE
AND siz.SKU IN
(
'SPRA0148002R0303-54',
'SRYB2658004P0303-50',
'SOAK0632006R0105-55',
'SRYB0372080R0707-50',
'SRYB0226048P1406-58',
'SRBJ0030048R1406-50',
'SOAK0281046R0203-70',
'SRYB2671020R1406-58',
'SVAL0170005R0101-51',
'SOAK0091035R0506-56',
'SMAU0038046P1205-71',
'GVER054500501-53',
'GRYB009302401-52',
'AC05-88N0275Z00000Z',
'BF02-87N0400N12518Z',
'BF02-87N1000N07502Z',
'GCAR019705306-54',
'PF01-86Z0000Z00000Z',
'BBT05-86N0150N20018Z',
'AC11-87N0425Z00000Z',
'BF01-86N0350Z00000Z',
'PUV03-87N0700N07516Z',
'BF02-87N0100N12518Z',
'BF02-87N0750N22517Z',
'BF02-87N0550N12509Z',
'AC02-85N0300Z00000Z',
'PC02-86N0650Z00000Z',
'AC06-86N0550N22518Z',
'BM03-87N0250N17512Z',
'CV53-86N0300Z00000Z',
'PUV03-87N0550N17509Z',
'BBT04-86N0250N25002Z',
'BI20-86Z0000Z00000Z',
'SGMV0612005R0101-00',
'VE04-86N0400Z00000Z',
'GSFD020111-59',
'FL17-86N0225Z00000Z',
'FL18-86N0325Z00000Z',
'GMC02-86N0375Z00000Z',
'BE06-86N0175Z00000Z',
'PM01-86Z0000Z00000Z',
'PM02-86N0450Z00000Z',
'GMC55-87N0650Z00000Z',
'GCN05-87N0350Z00000Z',
'GMC01-86N0300Z00000Z'
)
ORDER BY siz.SKU
;