【发布时间】:2015-09-19 05:46:38
【问题描述】:
我有这个问题
select adate, factoryid, purchid, itemname, max(price) as price
from tableb where catnum = 9
group by adate, factoryid, purchid, itemname
order by adate, factoryid, purchid, itemname
但我想要该行的 id。所以在一个完美的世界里:
select id, adate, factoryid, purchid, itemname, max(price) as price
from tableb where catnum = 9
group by adate, factoryid, purchid, itemname
order by adate, factoryid, purchid, itemname
但我知道那行不通。
所以我尝试了这个:
select id, adate, factoryid, purchid, itemname,
max(price) over(partition by adate, factoryid, purchid, itemname) as price
from tableb where catnum = 9
这行不通。所有 id 的价格都是重复的。查询结果集从 4000 行增加到 11000 行。
很明显,我弄错了窗口函数。首先,我做错了什么,其次,当然,我该如何解决?
【问题讨论】:
-
id 不是唯一确定的。你想要所有的 id 还是任何一个?
标签: sql tsql sql-server-2012 aggregate-functions window-functions