SQL Northwind数据库查询重复行

时间:2018-06-08 13:52:12

标签: sql duplicates

我正在尝试创建一个查询,如果订单中订购的产品多于库存产品但是它有重复,我将无法理解原因。请参见下面的屏幕截图:enter image description here

查询是:

SELECT  a.OrderID, a.CustomerID,
(SELECT SUM(Subtotal) from [Order Subtotals] AS f 
  where a.OrderID = f.OrderID) as Total,
(Select SUM(Quantity) as Quantity from dbo.[Order Details Extended] b
  where a.OrderID = b.OrderID) as Quantity,
 ( SELECT
             CASE 
                  WHEN Quantity > d.UnitsInStock or Discontinued = 1 
                     THEN 'error in order' 
                  ELSE ''
             END AS varchar) as Messagee
FROM            dbo.Orders AS a

 Left join [Order Details Extended] as c on a.OrderID = c.OrderID
 Left join Products as d on c.ProductID = d.ProductID

1 个答案:

答案 0 :(得分:1)

正确的查询是:

SELECT  a.OrderID, a.CustomerID, sum(os.subtotal) as Total,
 SUM(ode.Quantity) as quantity,
  CASE WHEN COUNT(
   CASE WHEN Quantity > pro.UnitsInStock OR Discontinued = 1 THEN 1 END
 ) > 0 THEN 'error in order' ELSE '' END AS Message
from dbo.Orders as a
Left join [Order Details Extended] as ode
on a.OrderID = ode.OrderID
Left join Products as pro
on ode.ProductID = pro.ProductID
left join [Order Subtotals] as os
on a.OrderID = os.OrderID

group by a.OrderID, a.CustomerID