我需要一些sql查询方面的帮助。我目前得到以下信息:
SELECT dbo.PREISGRUPPEN.ARTIKELNR, KEK, PREIS, dbo.PREISGRUPPEN.ROWID
FROM dbo.PREISGRUPPEN, dbo.ARTIKEL
WHERE dbo.PREISGRUPPEN.GRUPPE = 5 AND dbo.PREISGRUPPEN.ARTIKELNR = dbo.ARTIKEL.ARTIKELNR
ORDER BY dbo.PREISGRUPPEN.ARTIKELNR, dbo.PREISGRUPPEN.ROWID
此查询得到以下结果:
ARTIKELNR KEK PREIS ROWID
18661840 6.650000000000 4.65 5076049
18661840 6.650000000000 7.44 5448817
18661840 6.650000000000 7.98 5604886
18661841 6.650000000000 4.65 5076050
18661841 6.650000000000 7.44 5448838
18661841 6.650000000000 7.98 5604887
18661842 13.360000000000 9.36 5076051
18661842 13.360000000000 14.96 5448863
18661842 13.360000000000 16.03 5604888
18661843 5.240000000000 7.34 5076052
18661843 5.240000000000 5.87 5448873
18661843 5.240000000000 6.29 5604889
18661844 4.600000000000 6.45 5076053
18661844 4.600000000000 5.15 5448875
18661844 4.600000000000 5.52 5604890
18661845 21.470000000000 25.76 5449243
18661846 6.650000000000 4.65 5076054
18661846 6.650000000000 7.44 5448806
18661846 6.650000000000 7.98 5604891
18661847 6.650000000000 4.65 5076055
18661847 6.650000000000 7.44 5448822
18661847 6.650000000000 7.98 5604892
问题是,每件艺术品我只想要一次。它应该总是具有最高rowid的。基本上,我的结果应该如下表所示:
ARTIKELNR KEK PREIS ROWID
18661840 6.650000000000 7.98 5604886
18661841 6.650000000000 7.98 5604887
18661842 13.360000000000 16.03 5604888
18661843 5.240000000000 6.29 5604889
18661844 4.600000000000 5.52 5604890
18661845 21.470000000000 25.76 5449243
18661846 6.650000000000 7.98 5604891
18661847 6.650000000000 7.98 5604892
我怎样才能解决我的问题?我尝试了max(rowid)和嵌套select查询,但没有成功。我没什么主意了。
有人能帮我吗?
2条答案
按热度按时间of1yzvn41#
使用order by dbo.preisgruppen.rowid desc并在first select子句中放入unique(dbo.preisgruppen.artikelnr),这就足够了。
dw1jzc5e2#
听起来你很接近!这里我使用了一个公共表表达式(cte),所以我只使用一个表。然后我找到了
MAX
每个artikelnr的rowid,然后将它们连接回cte以获取最高rowid的其余信息。这将为具有重复max rowids的任何artikelnr返回多行。但是如果rowid是唯一的,那就不是问题了。