我正在制作一个表,其中有一个需要包含唯一值的特定列,我试图使用this问题的解决方案。不过,我似乎无法正确解决问题。删除基于表的一列的重复值
这里是我的SQL:现在
SELECT DISTINCT tabArtikel.ArtCode, tabArtikelLeverancierDetail.AldArtCodeBijLeverancier,
tabArtikel.ArtOms, vwKMBVoorraad.MagVoorraad, vwKMBVoorraad.LocNaam,
tabArtikelLeverancierDetail.AldInkoopPrijs, tabVoorraadMutatie.VrdMutDatum, tabNawFile.NawFilNummer
FROM KingSystem.tabArtikel tabArtikel,
KingSystem.tabArtikelLeverancier tabArtikelLeverancier,
KingSystem.tabArtikelLeverancierDetail tabArtikelLeverancierDetail,
KingSystem.tabNawFile tabNawFile,
KingSystem.tabVoorraadMutatie tabVoorraadMutatie,
KingSystem.vwKMBVoorraad vwKMBVoorraad
WHERE vwKMBVoorraad.ArtGid = tabArtikel.ArtGid
AND tabArtikelLeverancier.ArtLevArtGid = tabArtikel.ArtGid
AND tabArtikelLeverancierDetail.AldArtLevGid = tabArtikelLeverancier.ArtLevGid
AND tabVoorraadMutatie.VrdMutArtGid = tabArtikel.ArtGid
AND tabNawFile.NawFilNawGid = tabArtikelLeverancier.ArtLevNawGid
AND ((vwKMBVoorraad.MagVoorraad>0) AND (tabArtikel.ArtCode Not Like 'V%'))
ORDER BY tabVoorraadMutatie.VrdMutDatum DESC
,还有一两件事。在ArtCode重复值被删除之前,VrdMutDatum的日期需要首先降序排序。
我不知道这是否是所有必要的信息,所以,如果你需要我张贴别的其他然后上面,然后让我知道
附:我这样做是因为输出包含125K +行,当它应该只有5K行
我从上面的链接实现代码尝试:
SELECT tabArtikel.ArtCode, tabVoorraadMutatie.VrdMutDatum
FROM KingSystem.tabArtikel INNER JOIN
(SELECT tabVoorraadMutatie.*, ROW_NUMBER() OVER (PARTITION BY ArtCode ORDER BY date DESC) AS seqnum)
FROM history tabVoorraadMutatie
) tabArtikel, KingSystem.tabVoorraadMutatie tabVoorraadMutatie
WHERE tabArtikel.ArtGid = tabVoorraadMutatie.VrdMutArtGid
ON tabArtikel.ArtCode = tabVoorraadMutatie.VrdMutDatum AND seqnum = 1
ORDER BY tabArtikel.ArtCode, tabVoorraadMutatie.date
提示1:较短的表别名! – jarlh
提示2:使用正确的连接语法! – fancyPants
@fancyPants你的意思是INNER JOIN?我尝试使用邮件中发布的链接中的代码,但它没有帮助。我把它编辑为:(在P.S.下面的部分) –