[英]how to show sales summary in rdlc from four sql table using sql
我很难生成一个rdlc报告,以便以我的客户端给出的预定义格式显示报告。
你可以注意到RED背景是我的问题区域,项目“A”的价格已经改变了三倍。 因此显示他们的销售,破损和退款数量。 我有4个表产品,SalesLog,Breakages,SalesReturn。 产品表包含物料的最新(当前)价格,但SalesLog,Breakages和SalesReturn表包含销售,破损和销售退货时的价格。 我已经为SalesLog,Breakges和SalesReturn编写了查询,根据ProductCode,Price和Quantity显示行。 但我不明白我如何合并他们(4表输出)输出以显示下面的结果。
查询SalesLog
SELECT [Products].pCode AS Code,
[Products].pName AS Item,
SalesLog.[Price] AS Price ,
COUNT(*)AS Quantity ,
SUM(SalesLog.[Price]) AS Total
FROM SalesLog
INNER JOIN [Products] ON [Products].pCode = SalesLog.ProductCode
WHERE BillDate = '07/01/2010'
GROUP BY [Products].pCode,[Products].pName ,
SalesLog.[Price]
查询破损
SELECT [Products].pCode AS Code,
[Products].pName AS Item,
Breakages.[Price] AS Price ,
COUNT(*)AS Quantity ,
SUM(Breakages.[Price]) AS Total
FROM Breakages
INNER JOIN [Products] ON [Products].pCode = Breakages.ProductCode
WHERE BillDate = '07/01/2010'
GROUP BY [Products].pCode,[Products].pName ,
Breakages.[Price]
查询SalesReturn
SELECT [Products].pCode AS Code,
[Products].pName AS Item,
Breakages.[Price] AS Price ,
COUNT(*)AS Quantity ,
SUM(Breakages.[Price]) AS Total
FROM Breakages
INNER JOIN [Products] ON [Products].pCode = Breakages.ProductCode
WHERE BillDate = '07/01/2010'
GROUP BY [Products].pCode,[Products].pName ,
Breakages.[Price]
产品表
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]
任何人都可以帮助我,或建议任何技巧来实现这一目标。
提前致谢.....
从查看您的数据开始,这只是我的头脑。 我想我只需要提取一个“Code”,“Item”,“Price”的唯一列表,然后使用这个唯一列表对每个查询(Sales,Breakage,Return)进行LEFT JOIN。 如果值为null,则可以使用coalesce将值默认为0,并且可以使用final where子句删除所有三个结果为零的记录(除非您希望显示在给定的任何内容中没有执行任何操作)价钱)。
以下几行中有什么用处吗? (给我一个或两个方括号,因为我在SQL Server上不是一个好主意)。
SELECT [Products].pCode AS Code,
[Products].pName AS Item,
SLO.[Price] AS Price,
(SELECT COUNT(*)
FROM SalesLog SL
WHERE SL.ProductCode = SLO.ProductCode AND
SL.Billdate = SLO.BillDate) AS SalesQty,
(SELECT SUM(SL.Price)
FROM SalesLog SL
WHERE SL.ProductCode = SLO.ProductCode AND
SL.Billdate = SLO.BillDate) AS SalesValue,
(SELECT COUNT(*)
FROM Breakages
WHERE Breakages.ProductCode = SLO.ProductCode AND
Breakages.BillDate = SLO.BillDate) AS BreakageQty,
...etc...
FROM SalesLog SLO INNER JOIN [Products] ON [Products].pCode = SLO.ProductCode
WHERE BillDate = '07/01/2010'
GROUP BY [Products].pCode,
[Products].pName ,
SLO.[Price]
最后,我在ServerFault.co上提出的一个问题,由于他们的管理员移动到StackOverFlow.com,我得到了一个我认为很容易得到的答案(至少对我而言)。 请不要介意那些帮助我的人。 这个查询正在做我想要的。
感谢所有人的支持(尤其是STACKOVERFLOW.COM )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.