[英]SQL sub-query assistance
使用子查询,返回有折扣的所有订单的货币价值-超过15% -这样的名单orderid
和订单价值这最后在顶部的最高值。
我不断收到错误消息。
USE Northwind
GO
SELECT
SUM(od.orderid) As OrderID,
AS [Order Values]
FROM
[Order Details] od
WHERE
od.Discount = (SELECT od.Discount
FROM [Order Details] od
GROUP BY od.discount
HAVING od.discount >.15)
GROUP BY
od.quantity, od.discount, od.UnitPrice
ORDER BY
[Order Values] ASC;
错误是:
消息156,第15层,状态1,第2行
关键字“ AS”附近的语法不正确。
消息156,第15层,状态1,第9行
关键字“ GROUP”附近的语法不正确。
这是您的查询:
SELECT SUM(od.orderid) As OrderID,
AS [Order Values]
FROM [Order Details] od
WHERE od.Discount = (SELECT od.Discount
FROM [Order Details] od
GROUP BY od.discount
HAVING od.discount >.15
)
GROUP BY od.quantity, od.discount, od.UnitPrice
ORDER BY [Order Values] ASC;
它至少有两个语法错误。 AS [Order Values]
一直在那儿徘徊。 不正确的。 另外,您对可能返回多行的子查询使用=
。 即使您解决了这些问题,查询也不会做您想要的事情,我不认为。
编辑:
您想要的查询可能是:
SELECT od.orderid, sum( od.quantity * od.UnitPrice * (1 - od.discount)) as value
FROM [Order Details] od
GROUP BY od.orderid
HAVING sum(case when od.discount > 0.15 then 1 else 0 end) > 0
ORDER BY value desc;
以下几行有问题:SELECT SUM(od.orderid)作为OrderID,AS [订单值]
在第二行中,在AS之前没有指定任何内容。 或者您之前错过了列名,或者您需要删除“ AS OrderID”,还有一点:将WHERE子句的=运算符更改为IN。 如果子查询返回多个值,则这是为了避免错误。
您的查询将如下所示:USE Northwind GO
SELECT SUM(od.orderid)AS [Order Values] FROM [Order Details] od WHERE od.Discount IN(SELECT od.Discount FROM [Order Details] od GROUP BY od.discount HAving od.discount> .15)GROUP BY od .quantity,od.discount,od.UnitPrice ORDER BY [订单值] ASC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.