我需要帮助来编写我坚持的查询。
我基本上需要他们的“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