我需要帮助编写一个我坚持的查询。
我基本上需要CompanySteps列表,他们的“CompanyStepCompanyCode”正在等待,这意味着没有被指定为当前的“CompanyNextGoCompany”。所以他们正在等待轮到报告的一系列步骤。
公司与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”只是我所做的一个分区。我不确定它是否可以用于此。 我正在寻找旁边的公司来自另一张桌子,大约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