检索每个销售代表的初始工作流程
此 SQL 查询有效地检索当前月份和年份内每个销售代表的第一个工作流程记录。 数据来自两个表:SM_Employee
和 SM_SalesRepWorkflow
.
该解决方案利用了ROW_NUMBER()
窗口函数。此函数根据指定的顺序(此处为 workflowid
)为定义的分区内的每一行(在本例中为每个销售代表)分配唯一的排名。
这是 SQL 查询:
<code class="language-sql">SELECT * FROM ( SELECT workflowid, salesRepId, quantityAssigned, quantityLeft, month, year, ROW_NUMBER() OVER (PARTITION BY salesRepId ORDER BY workflowid) AS rownumber FROM SM_SalesRepWorkflow ) ranked_workflows WHERE rownumber = 1;</code>
此查询首先为每个销售代表的每个工作流程分配一个行号,按 workflowid
排序。 然后,外部查询过滤此结果集,仅选择带有 rownumber = 1
的行,有效返回每个 salesRepId
.
示例数据和结果:
鉴于来自 SM_SalesRepWorkflow
的示例数据:
Workflowid | SalesRepId | QuantityAssigned | QuantityLeft | Month | Year |
---|---|---|---|---|---|
WF_101 | EMP_101 | 100 | 90 | May | 2013 |
WF_102 | EMP_101 | 100 | 70 | May | 2013 |
WF_101 | EMP_102 | 100 | 100 | May | 2013 |
WF_101 | EMP_103 | 100 | 80 | May | 2013 |
查询将返回:
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 |
这准确地反映了每个销售代表的第一个工作流程。 请注意,此方法假设 workflowid
提供有意义的顺序来确定“第一个”工作流程。 如果需要不同的顺序,请相应地调整 ORDER BY
子句。
以上是如何用SQL检索每个销售代表的第一个工作流程?的详细内容。更多信息请关注PHP中文网其他相关文章!