23

我有两张桌子。

1-> SM_Employee

 (1) employeeid   
 (2) roleid
 (3) storeid

2-> SM_SalesRepWorkflow

 (1) workflowid
 (2) Salesrepid   foreign key to employeeid
 (3) QuantityAssigned
 (4) QuantityLeft
 (5) month 
 (6) year

通过这些表,我需要从 SM_SalesRepWorkflow 订单中选择每个 SalesRep 详细信息的第一行,按 SalesRepId 为 CurrentMonth 和 CurrentYear。

例子

Workflowid SalesRepId QuantityAssigned QuantityLeft Month Year

WF_101:EMP_101:100:90:2013 年 5 月
WF_101:EMP_102:100:100:2013 年 5 月
WF_101:EMP_103:100:80:2013 年 5 月WF_102:EMP_101 5
:100:100

所以我想要的结果是

WF_101:EMP_101:100:90:2013 年 5 月
WF_101:EMP_102:100:100:2013 年 5 月
WF_101:EMP_103:100:80:2013 年 5 月

所以一个销售代表可以有很多工作流。但我想要当前月份和年份的每个 SalesRep 的第一个。

4

2 回答 2

44

您可以ROW_NUMBER()像这样使用该功能:

SELECT *
  FROM(SELECT workflowid, salesRepId, quantityAssigned,
              quantityLeft, month, year
              , ROW_NUMBER()
                OVER (PARTITION BY salesRepId
                          ORDER BY workflowid) AS rownumber
         FROM sm_salesRepWorkflow)
 WHERE rownumber = 1;

小提琴演示

于 2013-05-13T19:55:38.197 回答
0

我在理解这个问题时遇到了一点麻烦,所以如果我离开了,我会在之后编辑它,但看起来你想做一些事情,比如SELECT * FROM SM_SalesRepWorkflow WHERE Workflowid = latest最新的工作流的 id 是哪里。也许您可以确定查询之外的最新信息并将其引入而不是从查询中执行?

于 2013-05-13T19:36:23.967 回答