Sql 子查询返回了多个值

Sql 子查询返回了多个值,sql,max,Sql,Max,我继承了这段在这里运行多年的SQL7代码。但在另一个位置,在另一个国家,他们得到了这个错误:子查询返回了多个值 SELECT lc.LoadNum, lc.ShipFromState, lc.ShipToNum, (SELECT ShippedStatus = CASE MAX(lc.Status) WHEN 'Shipped' THEN 'LOADED' WHEN 'Picked' THEN 'PICK UP' WHEN 'Cancel' THEN 'PICK UP' WHEN 'WtLo

我继承了这段在这里运行多年的SQL7代码。但在另一个位置,在另一个国家,他们得到了这个错误:子查询返回了多个值

SELECT
lc.LoadNum,
lc.ShipFromState,
lc.ShipToNum,
(SELECT ShippedStatus = CASE MAX(lc.Status) 
WHEN 'Shipped' THEN 'LOADED'
WHEN 'Picked' THEN 'PICK UP' 
WHEN 'Cancel' THEN 'PICK UP'
WHEN 'WtLoad' THEN 'PICK UP'
WHEN 'Released' THEN 'PICK UP'
WHEN 'Schedule' THEN 'PICK UP' 
WHEN 'Loaded' THEN 'PICK UP'
WHEN 'WtPick' THEN 'PICK UP'
WHEN 'Picking' THEN 'PICK UP'
END) AS ShippedStatus, 
tp.Description AS PlantDescription,
tp.Address,
tp.City,
tp.State, 
tp.ZipCode,
sv.Description AS ShipViaDescription
FROM
vwLoadContents lc (nolock) 
JOIN tblShipVia sv (nolock) ON lc.ShipVia = sv.Code
JOIN tblShipToCust sc (nolock) ON lc.ShipToNum = sc.ShipToNum
JOIN tblPlant tp (nolock) ON lc.ShipFromState = tp.Code
GROUP BY
lc.LoadNum,
lc.ShipFromState,
lc.ShipToNum, 
tp.Description,
tp.Address,
tp.City,
tp.State,
tp.ZipCode, 
sv.Description
MAXlc.Status函数如何返回多个值? 如果我删除整个选择ShippedStatus=Case Maxlc.Status。。。当ShippedStatus子查询时,错误就会消失

我用这行SQL代码替换了子查询

MAXCase lc.状态为“已装运”然后为“已装载”,否则为“提货”,最后为ShippedStatus

新的SQL代码行似乎在所有数据库的所有位置都能工作,即使MAX函数现在在案例外部而不是案例内部

那么,原始SQL脚本如何允许MAX函数返回多个值呢


谢谢大家!

您正在匹配shipped status等于该最大值的每个实例,除非您希望只有一个记录具有这样的ShippingStus。事实上,该查询的结构应该非常不同。我不理解您正在匹配shipped status等于MAX的每个实例。我认为MAX函数只会从每个组中的所有记录返回LC.status字段的最高值。您是说如果有两条记录具有相同的MAXLC.STATUS,那么这两条记录都将被返回?此子查询SELECT只是组中值最高的ShippedStatus变量的案例分配语句,而不是视图或表中行的子查询。我测试了您的theoar QWITHH我用选择订单号测试了您的理论,按订单号从tblORDER\u行组中选择MY\u STATUS=MAXSTATUS作为MY\u STATUS。我相信这与我上面的问题类似,并检验你的理论。但即使在组订单号中有多个状态完全相同的记录订单行,我也只看到返回的一条记录。因此,我不理解你的回答。你正在匹配每个实例,其中发货状态等于最大。。。但Shipped Status不是任何表中的字段名。Shipped Status是MAXlc.Status返回的计算值,子查询中没有FROM表。对我来说,子查询似乎只是一个赋值语句。从ANSI SQL的角度来看,您的CASE语句以其应用方式应用MAX是没有意义的。不仅如此,CASE语句作为一个整体没有任何意义,您正在执行标量子查询,并在SELECT语句中对该标量子查询进行比较?哎哟。我讨厌直截了当地说这是糟糕的SQL,但绝对是SQL不符合任何标准,我不知道如何解决这个问题,除非a你告诉我预期的结果是什么,b你现在得到了什么,c这个表中的示例数据,d完全重写它以符合ANSI标准。