【发布时间】:2019-08-07 13:43:02
【问题描述】:
我有一个产生以下结果的查询:
SQL Server 查询
SELECT DISTINCT com.CompanyID,c.Category,p.ModelNo,p.ProductCode,sum(sipl.SubTotal) AS Qty
FROM SalesInvoiceProductsList AS sipl
INNER JOIN SalesInvoice AS s ON sipl.SalesInvoiceID = s.SalesInvoiceID
INNER JOIN Product AS p ON sipl.ProductID = p.ProductID
INNER JOIN Company AS com ON p.CompanyID = com.CompanyID
INNER JOIN Category AS c ON p.CatID = c.CatID
WHERE (s.DateSold ='2019-02-04')
GROUP BY p.ModelNo,sipl.SubTotal,p.ProductCode,com.CompanyID, c.Category
order by com.CompanyID
查询结果
CompanyID Category ModelNo ProductCode Qty
--------------------------------------------- -------------------
Gree Fridge Invertor 1105 ghi 2
Gree Fridge Invertor 1105 ghi 6
PEL AC Invertor 1103 abc 1
我想要以下结果,但不使用嵌套/子查询,因为嵌套选择语句在使用 RDLC report of C# 时由于未知原因导致日期格式错误。所以简而言之,我需要以下结果而不使用嵌套的select 语句
期望的结果
CompanyID Category ModelNo ProductCode Qty
--------------------------------------------- -------------------
Gree Fridge Invertor 1105 ghi 8
PEL AC Invertor 1103 abc 1
以下查询会产生所需的结果,但与 C# RDLC 一起使用时会出现日期格式错误。
使用多选语句的不需要的查询
SELECT b.CompanyID, b.Category, a.ModelNo, a.ProductCode, a.Qty
FROM (SELECT s.DateSold, p.ProductID, p.ModelNo, p.ProductCode, SUM(sipl.SubTotal) AS Qty
FROM SalesInvoiceProductsList AS sipl
INNER JOIN SalesInvoice AS s ON sipl.SalesInvoiceID = s.SalesInvoiceID
INNER JOIN Product AS p ON sipl.ProductID = p.ProductID
GROUP BY p.ModelNo, p.ProductCode, p.ProductID, s.DateSold) AS a
INNER JOIN
(SELECT DISTINCT p.ProductID, p.CompanyID, cat.Category
FROM Product AS p
INNER JOIN Category AS cat ON p.CatID = cat.CatID
INNER JOIN Company AS c ON p.CompanyID = c.CompanyID) AS b ON a.ProductID = b.ProductID
group by b.CompanyID, b.Category, a.ModelNo, a.ProductCode, a.Qty,a.DateSold
having a.DateSold = '2019-02-04'
【问题讨论】:
-
您的第一个查询“不起作用”,因为您尝试对 sipl.SubTotal 求和,但您还将该列包含在 group by 子句中。您在该查询中有一个根本缺陷。将 DISTINCT 添加到它是修复它的一个工具,但它不起作用。 Gordon 没有特别说明就解决了这个问题。
标签: sql sql-server