我有两张桌子。
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
通过这些表,我需要从SalesRepId为CurrentMonth和CurrentYear从SM_SalesRepWorkflow订单中选择每个SalesRep详细信息的第一行。
实施例
Workflowid SalesRepId QuantityAssigned QuantityLeft Month Year
WF_101:EMP_101:100:90:May:2013
WF_101:EMP_102:100:100:May:2013
WF_101:EMP_103:100:80:May:2013
WF_102:EMP_101:100:70:May:2013
所以我想要的结果是
WF_101:EMP_101:100:90:May:2013
WF_101:EMP_102:100:100:May:2013
WF_101:EMP_103:100:80:May:2013
所以SalesRep可以有很多工作流程。 但我希望当前月份和年份的每个SalesRep都有第一个。
答案 0 :(得分:34)
您可以使用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;
<强> Fiddle Demo 强>
答案 1 :(得分:0)
我在理解这个问题时遇到了一些麻烦,所以如果我关闭,我会在之后编辑它,但看起来你想做SELECT * FROM SM_SalesRepWorkflow WHERE Workflowid = latest
之类的事情,其中最新版本是工作流程的ID。也许您可以确定查询的最新内容并将其带入而不是从查询中执行此操作?