我确定这是一个简单的查询,但它让我难倒了一段时间。我需要加入两个表并只返回每个分组的特定记录。
这是我正在使用的表:
CREATE TABLE [dbo].[FileData](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FinDataID] [int] NULL,
[PharmacyID] [int] NULL,
[FileName] [nvarchar](150) NULL,
[FileExtension] [nvarchar](15) NULL,
[Data] [varbinary](max) NULL,
[CreateDate] [datetime] NULL,
[CreatedByID] [int] NULL,
[UpdateDate] [datetime] NULL,
[UpdatedByID] [int] NULL
CREATE TABLE [dbo].[FinData](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PharmacyID] [int] NULL,
[PeriodStart] [date] NULL,
[PeriodEnd] [date] NULL,
[SalesTotal] [money] NULL,
[SalesDisp] [money] NULL,
[SalesRetail] [money] NULL,
[GPTotal] [decimal](12, 2) NULL,
[GPRetail] [decimal](12, 2) NULL,
[GPDisp] [decimal](12, 2) NULL,
[Advertising] [money] NULL,
[Rent] [money] NULL,
[GrossWages] [money] NULL,
[Depreciation] [money] NULL,
[InterestExp] [money] NULL,
[AllOtherExp] [money] NULL,
[OwnerHours] [money] NULL,
[CreateDate] [datetime] NULL,
[CreatedByID] [int] NULL,
[UpdateDate] [datetime] NULL,
[UpdatedById] [int] NULL
这些表包含以下示例数据:
FileData:
ID FinDataID PharmacyID yadayada
6 13 1
7 13 1
8 13 1
9 13 1
10 15 2
12 13 1
13 13 1
FinData: (where Pharmacy = 1)
ID PharmacyID PeriodStart
1 1 2012-07-01
13 1 2011-07-01
这是我最初使用的示例查询:
SELECT
FD.ID, FinData.ID AS FinDataID, FD.PharmacyID, FinData.PeriodStart, FinData.PeriodEnd, FileName, FileExtension, ISNULL(DATA,0) AS Data, FD.CreateDate, FD.CreatedByID, FD.UpdateDate, FD.UpdatedById
FROM FinData
LEFT JOIN FileData FD ON FD.FinDataID = FinData.ID
WHERE FinData.PharmacyID = @PharmacyID
ORDER BY PeriodStart desc, ID DESC
它返回了以下数据:
ID FinDataID PharmacyID PeriodStart yadayadayada
NULL 1 NULL 2012-07-01
13 13 1 2011-07-01
12 13 1 2011-07-01
9 13 1 2011-07-01
8 13 1 2011-07-01
7 13 1 2011-07-01
6 13 1 2011-07-01
基本上我需要该结果中每个 FinDataID 的最高记录......我知道我很接近但还没有找到解决方案!提前致谢!