2013-11-15 101 views
0

我有如下表:根據表字段分組數據

BarcodeGroupMap:

enter image description here

我們可以在論壇現場看到我有不同的羣體和barcodeItem與根據相關聯到它的EffectFrom日期。

我只是想根據羣組對條形碼項目進行分組,但是對於相同的條形碼項目,它應該考慮最近/最大效果從日期開始。

輸出我的願望:

 
Group BarcodeItem EffectFrom 
1   1   2013-11-10 
1   11  2013-11-14 
1   22  2013-11-10 (max date amount 3 for barcode item 22) 
1   222  2013-11-14 
1   333  2013-11-14 
1   3331  2013-11-14 

我提出以下查詢:

select * from BarcodeGroupMap bm , 

( 
    select groups,barcodeitem,bcgmid ,MAX(EffectFrom) as dates,CreatedDate as cdate from BarcodeGroupMap 
    group by groups ,barcodeitem,bcgmid,CreatedDate having Groups=1 

) T 
where t.Groups =bm.Groups and t.BarcodeItem = bm.BarcodeItem and T.Groups = 1 and t.dates =bm.EffectFrom Order by t.BarcodeItem , t.Groups 

但不工作。請幫幫我。

回答

1

修訂

SELECT * 
    FROM 
(
    SELECT m.*, ROW_NUMBER() OVER (PARTITION BY groups, barcodeitem 
            ORDER BY effectfrom DESC, createddate DESC) rnum 
     FROM BarcodeGroupMap m 
    WHERE groups = 1 
) t 
WHERE rnum = 1 
ORDER BY groups, barcode item 

這裏是SQLFiddle演示

+0

先生,這是我確切的想法,但如果我將不得不採取相同的生效日期的數據,然後我想根據最大創建日期...意味着如果生效日期是相同的特定條形碼項目,那麼它應該採取最大(createddate)並給出數據... plz幫助 –

+0

@FRIENDS查看更新的答案和sqlfiddle示例。 – peterm

+0

thanx,工作! –

1
select groups as [group], barcodeitem, max(EffectFrom) as EffectFrom 
from BarcodeGroupMap 
group by groups, barcodeitem 
order by groups, barcodeitem 
+0

我假設爲首的問題的一部分 「輸出我的願望:」 是所需的輸出的描述。 – dav1dsm1th