我有以下資料集,我需要做的是能夠僅提取具有不同 LotNo 的 ItemCode
RecCnt Store DelNo DelDate TruckNo ItemCode LotNo Line
2 443 B10237819 20220108 ZZZ023 10072879 0005113056 1
2 443 B10237819 20220108 ZZZ023 10072879 0005113430 2
2 443 B10237819 20220108 ZZZ023 10078415 0005109945 3
2 443 B10237819 20220108 ZZZ023 10078415 0005109945 4
2 443 B10237819 20220108 ZZZ023 10083294 0005113578 5
2 443 B10237819 20220108 ZZZ023 10083294 0005113578 6
2 443 B10237819 20220108 ZZZ023 10087629 0005108688 7
2 443 B10237819 20220108 ZZZ023 10087629 0005108688 8
從上面看,應該只回傳第 1 行和第 2 行。這是我的查詢,我有點卡住了..
SELECT RecCnt , DT.Store, DT.DelNo, DT.DelDate, DT.TruckNo, DT.Item,
MBT.Lot
FROM
(
SELECT COUNT (LOT) AS RecCnt, Store, DelNo, DelDate, TruckNo, Item
FROM MWTS_TMD
WHERE DelNo = 'B10237819'
HAVING COUNT(ITEM) > 1
GROUP BY Store, Item, DelNo, DelDate, TruckNo, Item
) DT
LEFT JOIN MW_BTS_TMD MBT
ON MBT.Store = DT.Store
AND MBT.DelNo = DT.DelNo
AND MBT.Item = DT.Item
uj5u.com熱心網友回復:
如果我理解正確,您可以嘗試使用DENSE_RANK視窗函式,DENSE_RANK將排名分配給磁區中的行,而排名值沒有間隙。
T是來自您的樣本資料的結果集
查詢 1:
SELECT *
FROM (
SELECT *,DENSE_RANK() OVER(ORDER BY ItemCode) rn
FROM T
) t1
WHERE rn = 1
結果:
| RECCNT | STORE | DELNO | DELDATE | TRUCKNO | ITEMCODE | LOTNO | RN |
|--------|-------|-----------|----------|---------|----------|------------|----|
| 2 | 443 | B10237819 | 20220108 | ZZZ023 | 10072879 | 0005113056 | 1 |
| 2 | 443 | B10237819 | 20220108 | ZZZ023 | 10072879 | 0005113430 | 1 |
uj5u.com熱心網友回復:
您可以使用子查詢:
SELECT *
FROM MWTS_TMD
WHERE Id IN (
SELECT Id
FROM Announcement
GROUP BY LotNo
HAVING COUNT(*) = 1);
uj5u.com熱心網友回復:
您可以使用子查詢來獲取具有多個不同 LotNo 的 ItemCode,方法是使用HAVINGLotNo 列上的子句(這將代替您的FROM()部分:
WHERE ItemCode IN
(SELECT ItemCode
FROM MWTS_TMD
GROUP BY ItemCode, LotNo
HAVING COUNT(LotNo) > 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/425003.html
上一篇:與字串的較低(空)比較不回傳行
