[英]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.