как показать изменения цены в отчете о продажах с помощью t-sql - PullRequest
0 голосов
/ 15 июля 2010

У меня есть две таблицы Products and SalesLog,

SalesLog Table

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 я должен показать отчет о продажах для разных товаров.Теперь проблема в том, что у меня есть отчет по показу в соответствии с диапазоном дат (например, с 01.01.2010 по 15.03.2010 дд / мм / гггг), и в этот период цена товара может изменяться несколько раз.Так что я должен показать и эти изменения цены.Например,

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

Как вы можете видеть в приведенном выше примере, цена товара «А» изменилась дважды, поэтому я должен показать, сколько количеств было продано по определенной цене за этот период.В таблице «Мои продукты» указана последняя цена товара (столбец pPrice), а в таблице SalesLog указана цена товара на момент выставления счета (столбец «Цена»).

Я много пробовал, но рядом с ней нет, Может кто-нибудь мне помочьT-SQL-запрос любой другой техники для достижения моей цели.

большое спасибо ..............

1 Ответ

2 голосов
/ 15 июля 2010

Вы хотите получить данные в Примере 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]
...