0
我有4個表,即產品,銷售日誌,破損,銷售退貨。從SQL Server表計算銷售,退款和中斷
產品表
CREATE TABLE [dbo].[Products](
[ProductId] [int] IDENTITY(1,1) NOT NULL,
[pName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[pSize] [int] NULL,
[pPrice] [decimal](10, 2) NULL,
[pPackQty] [int] NULL,
[pGroup] [int] NULL,
[pCode] [int] NULL,
[OpenStock] [int] NULL,
[CloseStock] [int] NULL,
[YrlyOpenStock] [int] NULL,
CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED
(
[ProductId] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
SalesLog表
CREATE TABLE [dbo].[SalesLog](
[SalesID] [int] IDENTITY(1,1) NOT NULL,
[MemoNo] [int] NULL,
[ProductCode] [int] NULL,
[Quantity] [int] NULL,
[Price] [decimal](10, 2) NULL,
[pGroup] [int] NULL,
[pName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[pSize] [int] NULL,
[BillDate] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_SalesLog] PRIMARY KEY CLUSTERED
(
[SalesID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
SalesReturn表
CREATE TABLE [dbo].[SalesReturn](
[srID] [int] IDENTITY(1,1) NOT NULL,
[ProductCode] [int] NULL,
[Quantity] [int] NULL,
[pGroup] [int] NULL,
[MemoNo] [int] NULL,
[SalesmanID] [int] NULL,
[Price] [decimal](10, 2) NULL,
[JobShift] [int] NULL,
[BillDate] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[AddedOn] [datetime] NULL,
CONSTRAINT [PK_SalesReturn] PRIMARY KEY CLUSTERED
(
[srID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
個表破壞發生
CREATE TABLE [dbo].[Breakages](
[breakId] [int] IDENTITY(1,1) NOT NULL,
[MemoNo] [int] NULL,
[SalesmanID] [int] NULL,
[ProductCode] [int] NULL,
[pName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Quantity] [int] NULL,
[Price] [decimal](10, 2) NULL,
[pGroup] [int] NULL,
[JobShift] [int] NULL,
[BillDate] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[AddedOn] [datetime] NULL,
CONSTRAINT [PK_Breakages_1] PRIMARY KEY CLUSTERED
(
[breakId] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
我有以生成單個報告以顯示SalesLOg,SalesReturn和特定日期的破裂(根據SalesLog,破損和SalesReturn的BillDate列)在以下的圖案。
通緝輸出
Code ItemName Price SalesQty BreakagesQty SalesReturnQty
1 A $10 50 2 2
1 A $12 150 1 10
15 X $5 56 0 2
20 Z $8 121 0 0
爲閱讀
,你可以看到產品「A」已被列出,因爲該產品的價格變動的兩倍,爲了減少輸出列。實現這個我寫了一個查詢:
SELECT SalesLog.pName, SalesLog.ProductCode, MIN(ItemGroup.gName) AS GroupName,
SalesLog.Price, SUM (SalesLog.Quantity) AS SalesQty,
SUM(SalesLog.Quantity * SalesLog.Price) AS SalesValue,
ISNULL ((SELECT SUM(Quantity) AS Expr1 FROM Breakages
WHERE (ProductCode = SalesLog.ProductCode) AND (Price = SalesLog.Price) AND
(BillDate = '07/01/2010') AND (pGroup <> 15) AND (pGroup <> 16)), 0) AS BreakQty,
ISNULL ((SELECT SUM(Quantity * Price) AS Expr1
FROM Breakages
WHERE (ProductCode = SalesLog.ProductCode) AND (Price = SalesLog.Price) AND
(BillDate = '07/01/2010') AND (pGroup <> 15) AND (pGroup <> 16)), 0) AS BreakValue,
ISNULL ((SELECT SUM(Quantity) AS Expr1
FROM SalesReturn
WHERE (ProductCode = SalesLog.ProductCode) AND (Price = SalesLog.Price) AND
(BillDate = '07/01/2010') AND (pGroup <> 15) AND (pGroup <> 16)), 0) AS ReturnQty,
ISNULL ((SELECT SUM(Quantity * Price) AS Expr1
FROM SalesReturn
WHERE (ProductCode = SalesLog.ProductCode) AND (Price = SalesLog.Price) AND
(BillDate = '07/01/2010') AND (pGroup <> 15) AND (pGroup <> 16)), 0) AS ReturnValue,
ISNULL ((SELECT SUM(Quantity) AS Expr1
FROM SalesLog
WHERE (ProductCode = Products.pCode)), 0) AS CummSales
FROM SalesLog
INNER JOIN
ItemGroup ON ItemGroup.gCode = SalesLog.pGroup AND SalesLog.pGroup = ItemGroup.gCode
INNER JOIN
Products ON Products.pCode = SalesLog.ProductCode
WHERE (SalesLog.BillDate = '07/01/2010') AND (SalesLog.pGroup <> 15) AND
(SalesLog.pGroup <> 16)
GROUP BY SalesLog.pName, SalesLog.ProductCode, SalesLog.Price, Products.pCode, Products.pPrice
ORDER BY SalesLog.ProductCode, SalesLog.pName
我與此查詢的問題是,它是無法顯示的項目的條目,其中沒有銷售,但有銷售回報。這個情況是由我的客戶給的。你能幫我解決這個問題嗎?任何T-SQL查詢或邏輯來實現這一條件將幫助...
感謝您對我的軸承.........
謝謝@馬克班尼斯特,我不知道你是如何幫助我的。這個查詢正在做我想要的。非常感謝.......................................... – 2010-07-20 01:46:28
我很高興幫助。 :) – 2010-07-20 10:03:54