2
我无法在下面的查询中获取第二个MAX语句以按照我的意愿工作,给出我现在得到的输出示例;MS SQL中CASE列的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
第一MAX为BIN
列工作,我与分组的含义是,不足部分得到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
应该是最终的结果集? – 2013-03-14 10:47:47
你在上面给出的表中想要什么变化? – 2013-03-14 11:04:28
第一个PART以'EM'结尾,而不是'ME'。你过滤ME,所以你不会得到第一部分的结果。 – JodyT 2013-03-14 11:12:12