如何解决如果我按字段添加组,则2个字段的总和显示不同的值
这是在Sql Server 2019中
我有一个大型查询,该查询由1个包含产品的基本表(variantID是主键)和8个子查询组成,这些子查询汇总了不同时间段内的销售额并将返回的数据返回到VariantID级别(再次,variantID成为主键)。所有子查询都通过左外部联接连接到产品表。
在2个字段上求和时,我得到奇怪的结果: 当SUM(V_LW_SKU_SLS.UnitsSold)-sum(V_LW_RETURNS.quantity)为空时的情况则为0 ELSE SUM(V_LW_SKU_SLS.UnitsSold)-sum(V_LW_RETURNS.quantity)END AS LW_NET_DEMAND_QTY
如果我分别汇总销售的单位和返回的数量作为单独的列,则这些值是正确的。如果没有按节分组(并且select语句中没有其他字段),则以上语句是正确的,但是如果我按字段添加分组,则该值将完全错误。
由于即使在有group by语句的情况下,作为单独列的值也是正确的,所以我没有认真研究所有子查询。
仅添加group by可能导致上述表达式中的结果不同? 以下是完整(且非常大)的查询:
SELECT [Group ID]
SUM(dbo.D_PRODUCTS.OH_QTY) AS OnHandQty,CASE WHEN SUM(V_LW_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.UnitsSold) END AS LW_SALE_QTY,CASE WHEN SUM(V_LW_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.NetAmt) END AS LW_SALE_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.UnitsSold) END AS LWLY_SALE_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetAmt) END AS LWLY_SALE_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.UnitsSold) END AS MTD_SALE_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetAmt) END AS MTD_SALE_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.UnitsSold) END AS MTDLY_SALE_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetAmt) END AS MTDLY_SALE_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.UnitsSold) END AS QTD_SALE_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetAmt) END AS QTD_SALE_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.UnitsSold) END AS QTDLY_SALE_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetAmt) END AS QTDLY_SALE_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.UnitsSold) END AS YTD_SALE_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetAmt) END AS YTD_SALE_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.UnitsSold) END AS YTDLY_SALE_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetAmt) END AS YTDLY_SALE_AMT,CASE WHEN SUM(V_LW_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.ShipQty - v_lw_returns.quantity)
END AS LW_NET_SHIP_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.ShipQty - v_lwly_returns.quantity) END AS LWLY_NET_SHIP_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.ShipQty) IS NULL
THEN 0 ELSE SUM(V_MTD_SKU_SLS.ShipQty - v_mtd_returns.quantity) END AS MTD_NET_SHIP_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.ShipQty - v_mtdly_returns.quantity) END AS MTDLY_NET_SHIP_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.ShipQty - v_qtd_returns.quantity) END AS QTD_NET_SHIP_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.ShipQty) IS NULL
THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.ShipQty - v_qtdly_returns.quantity) END AS QTDLY_NET_SHIP_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.ShipQty - v_ytd_returns.quantity) END AS YTD_NET_SHIP_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.ShipQty - v_ytdly_returns.quantity) END AS YTDLY_NET_SHIP_QTY,CASE WHEN SUM(V_LW_SKU_SLS.NetShip$) IS NULL
THEN 0 ELSE SUM(V_LW_SKU_SLS.NetShip$ - v_lw_returns.subtotal) END AS LW_NET_SHIP_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetShip$ - v_lwly_returns.subtotal) END AS LWLY_NET_SHIP_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetShip$ - v_mtd_returns.subtotal) END AS MTD_NET_SHIP_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetShip$) IS NULL
THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetShip$ - v_mtdly_returns.subtotal) END AS MTDLY_NET_SHIP_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetShip$ - v_qtd_returns.subtotal) END AS QTD_NET_SHIP_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetShip$ - v_qtdly_returns.subtotal) END AS QTDLY_NET_SHIP_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.NetShip$) IS NULL
THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetShip$ - v_ytd_returns.subtotal) END AS YTD_NET_SHIP_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetShip$ - v_ytdly_returns.subtotal) END AS YTDLY_NET_SHIP_AMT,CASE WHEN SUM(V_LW_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.ShipQty) END AS LW_SHIP_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.ShipQty) END AS LWLY_SHIP_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.ShipQty) END AS MTD_SHIP_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.ShipQty) END AS MTDLY_SHIP_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.ShipQty) END AS QTD_SHIP_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.ShipQty) END AS QTDLY_SHIP_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.ShipQty) END AS YTD_SHIP_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.ShipQty) END AS YTDLY_SHIP_QTY,CASE WHEN SUM(V_LW_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.NetShip$) END AS LW_SHIP_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetShip$) END AS LWLY_SHIP_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetShip$) END AS MTD_SHIP_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetShip$) END AS MTDLY_SHIP_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetShip$) END AS QTD_SHIP_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetShip$) END AS QTDLY_SHIP_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetShip$) END AS YTD_SHIP_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetShip$) END AS YTDLY_SHIP_AMT,--ADDING NET DEMAND AMOUNTS (Demand Value after discount minus returns)
--test of new lw net:
--sum(V_LW_SKU_SLS.netamt-v_lw_returns.subtotal) as NewLWNet$,CASE WHEN SUM(V_LW_SKU_SLS.NetAmt)-sum(V_LW_RETURNS.subtotal) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.NetAmt)-sum(V_LW_RETURNS.subtotal) END AS LW_NET_DEMAND_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetAmt) END AS LWLY_NET_DEMAND_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetAmt) END AS MTD_NET_DEMAND_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetAmt) END AS MTDLY_NET_DEMAND_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetAmt) END AS QTD_NET_DEMAND_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetAmt) END AS QTDLY_NET_DEMAND_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetAmt) END AS YTD_NET_DEMAND_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetAmt) END AS YTDLY_NET_DEMAND_AMT,--ADDING NET DEMAND QTY
CASE WHEN SUM(V_LW_SKU_SLS.UnitsSold)-sum(V_LW_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.UnitsSold)-sum(V_LW_RETURNS.quantity) END AS LW_NET_DEMAND_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.UnitsSold-V_LWLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.UnitsSold-V_LWLY_RETURNS.quantity) END AS LWLY_NET_DEMAND_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.UnitsSold-V_MTD_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.UnitsSold-V_MTD_RETURNS.quantity) END AS MTD_NET_DEMAND_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.UnitsSold-V_MTDLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.UnitsSold-V_MTDLY_RETURNS.quantity) END AS MTDLY_NET_DEMAND_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.UnitsSold-V_QTD_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.UnitsSold-V_QTD_RETURNS.quantity) END AS QTD_NET_DEMAND_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.UnitsSold-V_QTDLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.UnitsSold-V_QTDLY_RETURNS.quantity) END AS QTDLY_NET_DEMAND_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.UnitsSold-V_YTD_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.UnitsSold-V_YTD_RETURNS.quantity) END AS YTD_NET_DEMAND_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.UnitsSold-V_YTDLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.UnitsSold-V_YTDLY_RETURNS.quantity) END AS YTDLY_NET_DEMAND_QTY,--Return Metrics
CASE WHEN SUM(CAST(dbo.V_LW_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_LW_RETURNS.quantity AS INT)) END AS LW_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_LW_RETURNS.subtotal AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_LW_RETURNS.subtotal AS INT)) END AS LW_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_LWLY_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_LWLY_RETURNS.quantity AS INT)) END AS LWLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_LWLY_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_LWLY_RETURNS.subtotal AS INT)) END AS LWLY_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_MTD_RETURNS.quantity AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_MTD_RETURNS.quantity AS INT)) END AS MTD_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_MTD_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_MTD_RETURNS.subtotal AS INT)) END AS MTD_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_MTDLY_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_MTDLY_RETURNS.quantity AS INT)) END AS MTDLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_MTDLY_RETURNS.subtotal AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_MTDLY_RETURNS.subtotal AS INT)) END AS MTDLY_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_QTD_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_QTD_RETURNS.quantity AS INT)) END AS QTD_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_QTD_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_QTD_RETURNS.subtotal AS INT)) END AS QTD_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_QTDLY_RETURNS.quantity AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_QTDLY_RETURNS.quantity AS INT)) END AS QTDLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_QTDLY_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_QTDLY_RETURNS.subtotal AS INT)) END AS QTDLY_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_YTD_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_YTD_RETURNS.quantity AS INT)) END AS YTD_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_YTD_RETURNS.subtotal AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_YTD_RETURNS.subtotal AS INT)) END AS YTD_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_YTDLY_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_YTDLY_RETURNS.quantity AS INT)) END AS YTDLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_YTDLY_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_YTDLY_RETURNS.subtotal AS INT)) END AS YTDLY_RETURN_AMT
FROM dbo.D_PRODUCTS LEFT OUTER JOIN
dbo.V_YTDLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTDLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_YTD_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTD_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_QTDLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTDLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_QTD_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTD_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_MTDLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTDLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_LWLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_LWLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_MTD_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTD_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_LW_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_LW_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_LW_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_LW_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_MTD_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTD_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_LWLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_LWLY_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_MTDLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTDLY_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_QTD_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTD_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_YTD_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTD_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_QTDLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTDLY_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_YTDLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTDLY_SKU_SLS.ITEMVARIANTID
group by [Group ID]
解决方法
对于LW_NET_DEMAND_AMT列和LW_NET_DEMAND_QTY列,我在每个SUM()函数内添加了ISNULL()函数。这样会产生预期的结果吗?
SELECT [Group ID]
SUM(dbo.D_PRODUCTS.OH_QTY) AS OnHandQty,CASE WHEN SUM(V_LW_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.UnitsSold) END AS LW_SALE_QTY,CASE WHEN SUM(V_LW_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.NetAmt) END AS LW_SALE_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.UnitsSold) END AS LWLY_SALE_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetAmt) END AS LWLY_SALE_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.UnitsSold) END AS MTD_SALE_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetAmt) END AS MTD_SALE_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.UnitsSold) END AS MTDLY_SALE_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetAmt) END AS MTDLY_SALE_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.UnitsSold) END AS QTD_SALE_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetAmt) END AS QTD_SALE_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.UnitsSold) END AS QTDLY_SALE_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetAmt) END AS QTDLY_SALE_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.UnitsSold) END AS YTD_SALE_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetAmt) END AS YTD_SALE_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.UnitsSold) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.UnitsSold) END AS YTDLY_SALE_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetAmt) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetAmt) END AS YTDLY_SALE_AMT,CASE WHEN SUM(V_LW_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.ShipQty - v_lw_returns.quantity)
END AS LW_NET_SHIP_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.ShipQty - v_lwly_returns.quantity) END AS LWLY_NET_SHIP_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.ShipQty) IS NULL
THEN 0 ELSE SUM(V_MTD_SKU_SLS.ShipQty - v_mtd_returns.quantity) END AS MTD_NET_SHIP_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.ShipQty - v_mtdly_returns.quantity) END AS MTDLY_NET_SHIP_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.ShipQty - v_qtd_returns.quantity) END AS QTD_NET_SHIP_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.ShipQty) IS NULL
THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.ShipQty - v_qtdly_returns.quantity) END AS QTDLY_NET_SHIP_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.ShipQty - v_ytd_returns.quantity) END AS YTD_NET_SHIP_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.ShipQty - v_ytdly_returns.quantity) END AS YTDLY_NET_SHIP_QTY,CASE WHEN SUM(V_LW_SKU_SLS.NetShip$) IS NULL
THEN 0 ELSE SUM(V_LW_SKU_SLS.NetShip$ - v_lw_returns.subtotal) END AS LW_NET_SHIP_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetShip$ - v_lwly_returns.subtotal) END AS LWLY_NET_SHIP_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetShip$ - v_mtd_returns.subtotal) END AS MTD_NET_SHIP_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetShip$) IS NULL
THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetShip$ - v_mtdly_returns.subtotal) END AS MTDLY_NET_SHIP_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetShip$ - v_qtd_returns.subtotal) END AS QTD_NET_SHIP_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetShip$ - v_qtdly_returns.subtotal) END AS QTDLY_NET_SHIP_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.NetShip$) IS NULL
THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetShip$ - v_ytd_returns.subtotal) END AS YTD_NET_SHIP_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetShip$ - v_ytdly_returns.subtotal) END AS YTDLY_NET_SHIP_AMT,CASE WHEN SUM(V_LW_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.ShipQty) END AS LW_SHIP_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.ShipQty) END AS LWLY_SHIP_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.ShipQty) END AS MTD_SHIP_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.ShipQty) END AS MTDLY_SHIP_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.ShipQty) END AS QTD_SHIP_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.ShipQty) END AS QTDLY_SHIP_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.ShipQty) END AS YTD_SHIP_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.ShipQty) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.ShipQty) END AS YTDLY_SHIP_QTY,CASE WHEN SUM(V_LW_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_LW_SKU_SLS.NetShip$) END AS LW_SHIP_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetShip$) END AS LWLY_SHIP_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetShip$) END AS MTD_SHIP_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetShip$) END AS MTDLY_SHIP_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetShip$) END AS QTD_SHIP_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetShip$) END AS QTDLY_SHIP_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetShip$) END AS YTD_SHIP_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetShip$) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetShip$) END AS YTDLY_SHIP_AMT,--ADDING NET DEMAND AMOUNTS (Demand Value after discount minus returns)
--test of new lw net:
--sum(V_LW_SKU_SLS.netamt-v_lw_returns.subtotal) as NewLWNet$,SUM(ISNULL(V_LW_SKU_SLS.NetAmt,0))-sum(ISNULL(V_LW_RETURNS.subtotal,0)) AS LW_NET_DEMAND_AMT,CASE WHEN SUM(V_LWLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.NetAmt) END AS LWLY_NET_DEMAND_AMT,CASE WHEN SUM(V_MTD_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.NetAmt) END AS MTD_NET_DEMAND_AMT,CASE WHEN SUM(V_MTDLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.NetAmt) END AS MTDLY_NET_DEMAND_AMT,CASE WHEN SUM(V_QTD_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.NetAmt) END AS QTD_NET_DEMAND_AMT,CASE WHEN SUM(V_QTDLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.NetAmt) END AS QTDLY_NET_DEMAND_AMT,CASE WHEN SUM(V_YTD_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.NetAmt) END AS YTD_NET_DEMAND_AMT,CASE WHEN SUM(V_YTDLY_SKU_SLS.NetAMT) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.NetAmt) END AS YTDLY_NET_DEMAND_AMT,--ADDING NET DEMAND QTY
SUM(ISNULL(V_LW_SKU_SLS.UnitsSold,0))-sum(ISNULL(V_LW_RETURNS.quantity,0_)) AS LW_NET_DEMAND_QTY,CASE WHEN SUM(V_LWLY_SKU_SLS.UnitsSold-V_LWLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_LWLY_SKU_SLS.UnitsSold-V_LWLY_RETURNS.quantity) END AS LWLY_NET_DEMAND_QTY,CASE WHEN SUM(V_MTD_SKU_SLS.UnitsSold-V_MTD_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_MTD_SKU_SLS.UnitsSold-V_MTD_RETURNS.quantity) END AS MTD_NET_DEMAND_QTY,CASE WHEN SUM(V_MTDLY_SKU_SLS.UnitsSold-V_MTDLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_MTDLY_SKU_SLS.UnitsSold-V_MTDLY_RETURNS.quantity) END AS MTDLY_NET_DEMAND_QTY,CASE WHEN SUM(V_QTD_SKU_SLS.UnitsSold-V_QTD_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_QTD_SKU_SLS.UnitsSold-V_QTD_RETURNS.quantity) END AS QTD_NET_DEMAND_QTY,CASE WHEN SUM(V_QTDLY_SKU_SLS.UnitsSold-V_QTDLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_QTDLY_SKU_SLS.UnitsSold-V_QTDLY_RETURNS.quantity) END AS QTDLY_NET_DEMAND_QTY,CASE WHEN SUM(V_YTD_SKU_SLS.UnitsSold-V_YTD_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_YTD_SKU_SLS.UnitsSold-V_YTD_RETURNS.quantity) END AS YTD_NET_DEMAND_QTY,CASE WHEN SUM(V_YTDLY_SKU_SLS.UnitsSold-V_YTDLY_RETURNS.quantity) IS NULL THEN 0 ELSE SUM(V_YTDLY_SKU_SLS.UnitsSold-V_YTDLY_RETURNS.quantity) END AS YTDLY_NET_DEMAND_QTY,--Return Metrics
CASE WHEN SUM(CAST(dbo.V_LW_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_LW_RETURNS.quantity AS INT)) END AS LW_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_LW_RETURNS.subtotal AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_LW_RETURNS.subtotal AS INT)) END AS LW_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_LWLY_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_LWLY_RETURNS.quantity AS INT)) END AS LWLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_LWLY_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_LWLY_RETURNS.subtotal AS INT)) END AS LWLY_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_MTD_RETURNS.quantity AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_MTD_RETURNS.quantity AS INT)) END AS MTD_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_MTD_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_MTD_RETURNS.subtotal AS INT)) END AS MTD_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_MTDLY_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_MTDLY_RETURNS.quantity AS INT)) END AS MTDLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_MTDLY_RETURNS.subtotal AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_MTDLY_RETURNS.subtotal AS INT)) END AS MTDLY_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_QTD_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_QTD_RETURNS.quantity AS INT)) END AS QTD_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_QTD_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_QTD_RETURNS.subtotal AS INT)) END AS QTD_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_QTDLY_RETURNS.quantity AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_QTDLY_RETURNS.quantity AS INT)) END AS QTDLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_QTDLY_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_QTDLY_RETURNS.subtotal AS INT)) END AS QTDLY_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_YTD_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_YTD_RETURNS.quantity AS INT)) END AS YTD_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_YTD_RETURNS.subtotal AS INT)) IS NULL
THEN 0 ELSE SUM(CAST(dbo.V_YTD_RETURNS.subtotal AS INT)) END AS YTD_RETURN_AMT,CASE WHEN SUM(CAST(dbo.V_YTDLY_RETURNS.quantity AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_YTDLY_RETURNS.quantity AS INT)) END AS YTDLY_RETURN_QTY,CASE WHEN SUM(CAST(dbo.V_YTDLY_RETURNS.subtotal AS INT)) IS NULL THEN 0 ELSE SUM(CAST(dbo.V_YTDLY_RETURNS.subtotal AS INT)) END AS YTDLY_RETURN_AMT
FROM dbo.D_PRODUCTS LEFT OUTER JOIN
dbo.V_YTDLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTDLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_YTD_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTD_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_QTDLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTDLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_QTD_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTD_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_MTDLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTDLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_LWLY_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_LWLY_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_MTD_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTD_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_LW_RETURNS ON dbo.D_PRODUCTS.VariantID = dbo.V_LW_RETURNS.variant_id LEFT OUTER JOIN
dbo.V_LW_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_LW_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_MTD_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTD_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_LWLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_LWLY_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_MTDLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_MTDLY_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_QTD_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTD_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_YTD_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTD_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_QTDLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_QTDLY_SKU_SLS.ITEMVARIANTID LEFT OUTER JOIN
dbo.V_YTDLY_SKU_SLS ON dbo.D_PRODUCTS.VariantID = dbo.V_YTDLY_SKU_SLS.ITEMVARIANTID
group by [Group ID]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。