行き詰まっているクエリの作成について助けが必要です。
基本的に、「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