0

我有3个表如下:

条码组图

在此处输入图像描述

类别大师

在此处输入图像描述

产品大师:

在此处输入图像描述

从这 3 个表中,我进行了以下查询:

select bgm.BarcodeItem,
cm.CategoryID,cm.CategoryName,pm.ProductName,pm.ProductID,bgm.EffectFrom,bgm.Groups
from BarcodeGroupMap bgm,CategoryMaster cm,ProductMaster pm where
bgm.ProductID=pm.ProductID  and bgm.categoryID=cm.CategoryID

此查询结果如下:

在此处输入图像描述

现在,正如我们在查询结果中看到的条形码正在重复,

根据Barcodegroupmap表中的最新Createddate,我只想显示一个条形码。

为此,我进行了以下查询:

select bgm.BarcodeItem,
cm.CategoryID,cm.CategoryName,pm.ProductName,pm.ProductID,bgm.EffectFrom,bgm.Groups
from BarcodeGroupMap bgm,CategoryMaster cm,ProductMaster pm where
bgm.ProductID=pm.ProductID  and bgm.categoryID=cm.CategoryID and
bgm.BarcodeItem= select BarcodeItem from  BarcodeGroupMap bm1  where
CreatedDate=  (select top 1 CreatedDate from  BarcodeGroupMap bm2  
)order by bm1.BarcodeItem

但它没有给我正确的结果。

请帮我。

我只想根据 Barcodegroupmap 中的最新创建日期仅显示一个条形码项目。

4

2 回答 2

1

我无法实际尝试此查询,因为我没有相关的表和数据,但这应该可以帮助您入门:

SELECT BarcodeItem, temp.CategoryID, cm.CategoryName, temp.ProductID, pm.ProductName, EffectFrom FROM ( 
  SELECT BarcodeItem, CategoryID, ProductID, CONVERT(date, EffectFrom) as EffectFrom,
    RANK() OVER (PARTITION BY BarcodeItem ORDER BY EffectFrom DESC) dest_rank
    FROM BarcodeGroupMap
  ) temp
  inner join CategoryMaster cm on cm.CategoryID = temp.CategoryID
  inner join ProductMaster pm on pm.ProductID = temp.ProductID
  where temp.dest_rank = 1
于 2013-11-14T09:20:09.700 回答
1

你可以加入桌子吗?

SELECT bgm.BarcodeItem,
cm.CategoryID,cm.CategoryName,pm.ProductName,pm.ProductID,bgm.EffectFrom,bgm.Groups
from BarcodeGroupMap bgm
INNER JOIN CategoryMaster cm on bgm.categoryID=cm.CategoryID
INNER JOIN ProductMaster pm ON bgm.ProductID=pm.ProductID 
WHERE bgm.CreatedDate = (select top 1 CreatedDate from  BarcodeGroupMap bm2  
WHERE bgm.BarcodeItem = bm2.BarcodeItem ORDER BY CreatedDate  desc) order by bgm.BarcodeItem

如果你不想加入

select bgm.BarcodeItem,
cm.CategoryID,cm.CategoryName,pm.ProductName,pm.ProductID,bgm.EffectFrom,bgm.Groups
from BarcodeGroupMap bgm,CategoryMaster cm,ProductMaster pm where
bgm.ProductID=pm.ProductID  and bgm.categoryID=cm.CategoryID and
where bgm.CreatedDate=  (select top 1 CreatedDate from  BarcodeGroupMap bm2  
WHERE bgm.BarcodeItem = bm2.BarcodeItem ORDER BY CreatedDate  desc) order by bm1.BarcodeItem
于 2013-11-14T09:20:45.117 回答