0

行き詰まっているクエリの作成について助けが必要です。

基本的に、「CompanyStepCompanyCode」が保留中の CompanySteps のリストが必要です。つまり、現在の「CompanyNextGoCompany」として割り当てられていません。そのため、一連のレポートの手順で自分の番が来るのを待っています。

Company と CompanyStep の間には 1 対多の関係があります。「CompanyWorkNumber」を持つ 1 つの会社は、「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 については、現在の「CompanyStepCompanyCode(COBML)」が「CompanynextGoCompany(COBML)」の次のコードとして割り当てられているため、行 LASHW を返したいと考えています。これは、ステップがまだ完了していないことを意味します。 . LASHWは彼らの番を待っています。現在のステップの CompanyCode の後にある限り、LASHW が次の Company であるか、またはステップ ツリーをいくつ下っても問題ありません。

したがって、8886659 の場合、LASHW が Step を続行する最初の Company として割り当てられていることに気付いた場合でも、LASHW はその WorkNumber の最後でもあるため、その場合、「CompanyStepStepOrder」3 が返されます。

「lastStep」は、私が行った単なるパーティションです。これに使用できるかどうかはわかりません。次に行くのを待っている会社は、別のテーブルから来ており、約300社です。そして、情報を 1 つの SELECT として取得できるように、これら 3 つのテーブルを結合しようとしています。

それで、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