簡體   English   中英

Sql 查詢 - 在列表上為每組具有相同 ID 的 N 個項目生成“批次”編號

[英]Sql Query - Generating "lot" numbers on a list for each group of N items with the same ID

我遇到過需要編寫查詢的情況,但我不知道最佳路線是什么。

所以假設我有這樣的數據:

+------------+-------------------+
| EmployeeID |  ProjectStartDate |
+------------+-------------------+
| 1          |  01/01/2017       |
| 1          |  02/02/2017       |
| 1          |  03/03/2017       |
| 1          |  04/04/2017       |
| 1          |  05/05/2017       |
| 1          |  06/06/2017       |
| 1          |  07/07/2017       |
| 2          |  01/01/2017       |
| 2          |  02/02/2017       |
| 2          |  03/03/2017       |
| 2          |  04/04/2017       |
+------------+-------------------+

我需要為每個員工生成項目“批次”,但批次有一個與每組 N(這里假設為 5 個)項目相關聯的批號。 所以我需要一個查詢,可以按 EmployeeID 分組,按 ProjectStartDate 排序,然后將每個員工的結果動態分組為 5 組,為每個組分配一個增量計數。 所以最終的結果是這樣的:

+------------+-------------+------------------+
| LotNumber  | EmployeeId  | ProjectStartDate |
+------------+-------------+------------------+
| 1          | 1           | 01/01/2017       |
| 1          | 1           | 02/02/2017       |
| 1          | 1           | 03/03/2017       |
| 1          | 1           | 04/04/2017       |
| 1          | 1           | 05/05/2017       |
+------------+-------------+------------------+
| 2          | 1           | 06/06/2017       |
| 2          | 1           | 07/07/2017       |
+------------+-------------+------------------+
| 1          | 2           | 01/01/2017       |
| 1          | 2           | 02/02/2017       |
| 1          | 2           | 03/03/2017       |
| 1          | 2           | 04/04/2017       |
+------------+-------------+------------------+

通常,我只是為批次創建一個表,但批次號可以動態更改,因為它們從最舊的日期生成的第一批從日期開始。 因此,添加或刪除項目將更改其后的每個批號。

有沒有人對一種有效的方法有任何想法?

ROW_NUMBER和整數除法的組合應該可以工作:

WITH CTE AS
(
    SELECT  *,
            RN = ROW_NUMBER() OVER(PARTITION BY EmployeeID ORDER BT ProjectStartDate)
    FROM dbo.YourTable
)
SELECT  (RN -1 )/5 + 1 LotNumber,
        EmployeeID,
        ProjectStartDate
FROM CTE
;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM