我有两个表Products和SalesLog,
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]
产品表
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]
在我的 RDLC 报告中,我必须显示不同商品的销售报告。现在的问题是我根据日期范围显示报告(例如2010年1月1日至2010年3月15日dd / mm / yyyy),在此期间,项目价格可能会多次变化。所以我也必须展示那些价格变化。例如
Sales Report for the date 01/01/2010 to 15/03/2010
ItemName Price Quantity Total
A $1 2 $2
A $1.20 5 $6
A $1.10 5 $5.50
B $5 1 $5
正如您在上面的示例中所看到的,项目“A”的价格已经改变了两次,因此我必须显示该期间以特定价格出售的数量。我的产品表包含项目的最新价格(pPrice列),SalesLog表包含计费时的项目价格(价格列)。
我尝试了很多,但没有附近的地方,任何人都可以帮助我使用任何其他技术的T-SQL查询来实现我的目标。
非常感谢..............
答案 0 :(得分:2)
您是否希望获得示例A中的数据?如果是这样,这应该有效;
DECLARE @StartDate DATETIME ,
@EndDate DATETIME
SELECT @StartDate = '01 Jan 2010' ,
@EndDate = '15 Mar 2010'
SELECT [Products].pName AS ItemName,
SalesLog.[Price] AS Price ,
COUNT(*)AS Quantity ,
SUM(SalesLog.[Price]) AS Total
FROM SalesLog
JOIN [Products] ON [Products].pCode = SalesLog.ProductCode /*Check this join - I'm not sure what your relationship is*/
WHERE BillDate >= @StartDate
AND BillDate < @EndDate + 1
GROUP BY [Products].pName ,
SalesLog.[Price]