0

我需要帮助来编写我坚持的查询。

我基本上需要他们的“CompanyStepCompanyCode”待处理的 CompanySteps 列表,这意味着没有分配为当前的“CompanyNextGoCompany”。因此,他们正在等待轮到他们在一系列步骤中进行报告。

Company 与 CompanyStep 之间存在一对多关系。一个拥有“CompanyWorkNumber”的公司可以有多个“CompanyStepStepOrder”。这是数据外观的一个小快照。抱歉格式不好,不知道如何在这里创建好的表格。

+-------------------+----------------------+------------------------+----------------------+----------+
| CompanyWorkNumber | CompanyStepStepOrder | CompanyStepCompanyCode | CompanyNextGoCompany | lastStep |
+-------------------+----------------------+------------------------+----------------------+----------+
|           8126599 |                    1 | COBML                  | COBML                |        1 |
|           8126599 |                    2 | LASHW                  | COBML                |        2 |
|           8126599 |                    3 | UXEBC                  | COBML                |        3 |
|           8256656 |                    1 | ARKHA                  | COBML                |        1 |
|           8256656 |                    2 | COMSCH                 | COBML                |        2 |
|           8256656 |                    3 | LASHW                  | COBML                |        3 |
|           8356657 |                    1 | ARKHA                  | COBML                |        1 |
|           8356657 |                    2 | COMSCH                 | COBML                |        2 |
|           8356657 |                    3 | LASHW                  | COBML                |        3 |
|           8656658 |                    1 | ARKHA                  | COBML                |        1 |
|           8656658 |                    2 | TNSRA                  | COBML                |        2 |
|           8886659 |                    1 | LASHW                  | LASHW                |        1 |
|           8886659 |                    2 | UXEBC                  | LASHW                |        2 |
|           8886659 |                    3 | LASHW                  | LASHW                |        3 |
+-------------------+----------------------+------------------------+----------------------+----------+

因此,对于 CompanyWorkNumber 8126599,我希望 LASHW 行返回,因为当前的“CompanyStepCompanyCode(COBML)”被分配在 Go 旁边,“CompanynextGoCompany(COBML)”仍然分配了他们的代码,这意味着他们还没有完成他们的步骤. 所以 LASHW 正在等待轮到他们。如果 LASHW 是下一个要走的公司,或者在步骤树下有多少,这并不重要,只要它在当前步骤的 CompanyCode 之后即可。

因此,对于 8886659,如果您注意到 LASHW 被指定为第一个继续执行 Step 的公司,但它们也是该 WorkNumber 上的最后一个,那么对于那个,“CompanyStepStepOrder”3 应该返回。

“lastStep”只是我做的一个Partion。我不确定它是否可以用于此。我正在寻找下一个等待去的公司来自另一张桌子,其中大约 300 家。我希望加入这 3 个表,以便我可以将信息作为一个 SELECT 来获取。

所以我正在考虑使用 WITH () 也许......?我一直在搞乱不同的查询,但还没有什么真正可靠的。有人对如何进行有任何建议吗?

如果有人让我知道如何在这里做一张桌子,那就太好了:)

此查询构建了上述的内存版本,以便您可以处理数据。

WITH SRC
(
    CompanyWorkNumber
,   CompanyStepStepOrder
,   CompanyStepCompanyCode
,   CompanyNextGoCompany
,   lastStep
) AS
(
    SELECT 8126599, 1, 'COBML', 'COBML', 1
    UNION ALL SELECT 8126599, 2, 'LASHW', 'COBML', 2
    UNION ALL SELECT 8126599, 3, 'UXEBC', 'COBML', 3
    UNION ALL SELECT 8256656, 1, 'ARKHA', 'COBML', 1
    UNION ALL SELECT 8256656, 2, 'COMSCH', 'COBML', 2
    UNION ALL SELECT 8256656, 3, 'LASHW', 'COBML', 3
    UNION ALL SELECT 8356657, 1, 'ARKHA', 'COBML', 1
    UNION ALL SELECT 8356657, 2, 'COMSCH', 'COBML', 2
    UNION ALL SELECT 8356657, 3, 'LASHW', 'COBML', 3
    UNION ALL SELECT 8656658, 1, 'ARKHA', 'COBML', 1
    UNION ALL SELECT 8656658, 2, 'TNSRA', 'COBML', 2
    UNION ALL SELECT 8886659, 1, 'LASHW', 'LASHW', 1
    UNION ALL SELECT 8886659, 2, 'UXEBC', 'LASHW', 2
    UNION ALL SELECT 8886659, 3, 'LASHW', 'LASHW', 3
)
SELECT
    *
FROM
    SRC AS S
4

0 回答 0