首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server查询-仅选择每个产品代码的第一行

Server查询-仅选择每个产品代码的第一行
EN

Stack Overflow用户
提问于 2014-07-24 18:31:47
回答 2查看 129关注 0票数 0

我需要对我的产品清单上的最后一个采购价格做一个过滤器,但我只需要每一个产品的第一行(它已经在正确的订单上)。

示例:

代码语言:javascript
运行
复制
PRODUCT CODE                    PRICE      PURCH.DATE
-----------------------------------------------------
PO.MC.PER.001.N.PORTVIDEOCARD   0,3      20140521
PO.MC.PER.001.N.PORTVIDEOCARD   0,3      20140203
PO.MC.PER.001.N.PORTVIDEOCARD   0,3     20131115
PO.MC.PER.001.N.PORTVIDEOCARD   0,6     20130625
PO.MC.PER.001.N.PORTVIDEOCARD   0,5     20121122
SV.AI.SEI.006.N.CONFIEQUIPARE   800     20121211
SV.AI.SEI.006.N.CONFIEQUIPARE   3675    20121211
SV.AI.SEI.006.N.CONFIEQUIPARE   2000    20121114
SV.AI.SEI.006.N.CONFIEQUIPARE   2000    20120904
SV.AI.SFT.001.N.SOFTGERENCAME   2184    20121210
TI.AI.COP.001.N.NOTEBOOKPCXXX   3020,28 20110902
TI.AI.COP.002.N.COMPUTDESKTOP   2466,47 20140123
TI.AI.COP.002.N.COMPUTDESKTOP   2572    20131107
TI.AI.COP.002.N.COMPUTDESKTOP   2320    20131001
TI.AI.COP.002.N.COMPUTHP300GB   1517,5  20111130
TI.AI.COP.002.N.HPSMARTARRAYP   548,7   20111130
TI.AI.COP.002.N.UTRIUM920SAS    6050,6  20111130
TI.AI.COP.006.N.NOTEBOOKHPXXX   3020,28 20111117
TI.AI.COP.008.N.COMPUTINTELXE   1715    20111130
TI.AI.COP.009.N.COMPHP460WCSH   916,6   20111130
TI.AI.COP.011.N.MONITCOMPUTAD   25      20130613
TI.AI.COP.011.N.MONITCOMPUTAD   478     20130521

那么,我希望得到以下结果:

代码语言:javascript
运行
复制
PRODUCT CODE                    PRICE      PURCH.DATE
-----------------------------------------------------       
PO.MC.PER.001.N.PORTVIDEOCARD   0,3      20140521
SV.AI.SEI.006.N.CONFIEQUIPARE   800     20121211
SV.AI.SFT.001.N.SOFTGERENCAME   2184    20121210
TI.AI.COP.001.N.NOTEBOOKPCXXX   3020,28 20110902
TI.AI.COP.002.N.COMPUTDESKTOP   2466,47 20140123
TI.AI.COP.002.N.COMPUTHP300GB   1517,5  20111130
TI.AI.COP.002.N.HPSMARTARRAYP   548,7   20111130
TI.AI.COP.002.N.UTRIUM920SAS    6050,6  20111130
TI.AI.COP.006.N.NOTEBOOKHPXXX   3020,28 20111117
TI.AI.COP.008.N.COMPUTINTELXE   1715    20111130
TI.AI.COP.009.N.COMPHP460WCSH   916,6   20111130
TI.AI.COP.011.N.MONITCOMPUTAD   25      20130613

因此,最后的查询将只显示每种产品的最后价格一次。

我不能使用distinct,因为它们显然是不同的(尽管产品重复,价格和/或购买日期没有)

我正在使用Server 2008 R2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-24 18:36:23

看看它是否有效:

代码语言:javascript
运行
复制
 WITH cte AS
    (
       SELECT *,
             ROW_NUMBER() OVER (PARTITION BY PRODUCTCODE ORDER BY PURCHDATE DESC) AS rn
       FROM Table
    )
    SELECT *
    FROM cte
    WHERE rn = 1
票数 1
EN

Stack Overflow用户

发布于 2014-07-24 18:35:56

您可以使用row_number函数:

代码语言:javascript
运行
复制
with CTE as
(select
[Product Code],
[Price],
[Purch.date],
row_number() over (partition by [product code] order by [purch.date] desc) as RN
from
<your table>
)

select * from CTE
where
RN = 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24941394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档