我无法让下面查询中的第二个 MAX 语句按我的意愿工作,举一个我目前得到的输出示例;
PART FREE_STOCK BIN ME_BIN
01TSC7EM 21.0000 A1E NULL
01TSC7EM010MLG 7.0000 A1E NULL
01TSC7EM010MME 7.0000 218 218
01TSC7EM010MSM 3.0000 407 NULL
01TSC7EM010MXL 4.0000 407 NULL
该BIN
列的第一个 MAX 正在按我所期望的分组工作,这意味着短部分获得BIN
最多的位置FREE_STOCK
,我希望通过使用 case 语句并遵循类似的逻辑,我也可以返回BIN
部分结尾的位置'%ME'
并使用相同的 MAX 行为来为短部分设置它。
这是因为我使用 case 语句来提供值而不是针对列执行吗?关于如何让它发挥作用的任何建议?
SELECT dbo.part_bins.part, SUM(dbo.part_bins.free_stock) AS FREE_STOCK, MAX(PART_BINS.BIN) AS Bin,
MAX(CASE WHEN part_bins.part like '%ME' then PART_BINS.BIN END) AS ME_Bin
FROM dbo.part_bins
WHERE dbo.part_bins.free_stock > 0
GROUP BY dbo.part_bins.part
UNION
SELECT part.master_part AS part, SUM(dbo.part_bins.free_stock) AS FREE_STOCK, MAX(PART_BINS.BIN) AS Bin,
MAX(CASE WHEN part.master_part like '%ME' THEN PART_BINS.BIN END) AS ME_Bin
FROM dbo.part_bins
WHERE dbo.part_bins.free_stock > 0
GROUP BY part.master_part
我希望我能得到最终的结果是:
PART FREE_STOCK BIN ME_BIN
01TSC7EM 21.0000 A1E 218
01TSC7EM010MLG 7.0000 A1E NULL
01TSC7EM010MME 7.0000 218 218
01TSC7EM010MSM 3.0000 407 NULL
01TSC7EM010MXL 4.0000 407 NULL