簡體   English   中英

SQL子查詢協助

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM