【发布时间】:2010-09-24 15:17:00
【问题描述】:
这是示例输出
让我解释一下发生了什么:
查询返回每年的所有发票以及产品 发票中所涉及的。
如您所见,我们在 2010 年有两张发票...发票分别是 30463 和 30516。 发票 30463 有 4 个产品,其运费为 105.88。如你所见 每个产品都会重复运费,这会导致麻烦 我在报告级别计算总和。发票#30463 的 4 个产品有 整体运费105.00。我想要每张发票的每一个运费 无论发票中有多少产品,都只显示一次。我怎样才能实现它?
这里是查询:
SELECT
DATEPART(year, CustomerInvDetail.sentDate) AS "Year",
CustomerInvoice.cuInvoiceID,
Product.productName,
CustomerQuoteProducts.unitPrice,
CustomerQuoteProducts.qty,
CustomerQuoteProducts.qty * CustomerQuoteProducts.unitPrice AS "Price",
CustomerShipping.shippingPrice
FROM CustomerInvoice INNER JOIN CustomerInvDetail
ON CustomerInvoice.cuInvoiceID = CustomerInvDetail.cuInvoiceID
INNER JOIN CustomerQuote
ON CustomerQuote.customerQuoteID = CustomerInvoice.customerQuoteID
INNER JOIN CustomerQuoteProducts
ON CustomerQuoteProducts.customerQuoteID = CustomerQuote.customerQuoteID
INNER JOIN CustomerShipping
ON CustomerShipping.customerQuoteID = CustomerInvoice.customerQuoteID
INNER JOIN Customer
ON Customer.customerID = CustomerQuote.customerID
INNER JOIN Product
ON CustomerQuoteProducts.productID = Product.productID
WHERE (DATEPART(year, CustomerInvDetail.sentDate) BETWEEN 2001 AND 2022) AND (Customer.customerID = 500)
【问题讨论】:
-
那么,您的目标是让发票中的 105.00 仅出现一次,而 shippingPrice 中的剩余值显示为零?
-
您想显示所有产品,但只显示一次价格?或者您只需要每张发票的价格和编号?
-
因此,对于任何给定的发票编号,您希望运费仅显示在其中一行中吗?哪一行都无所谓,只要它只出现一次?发票的所有其他运费都为零?
-
YES .... 这就是我想要的。
标签: sql sql-server sql-server-2005 tsql sql-server-2008