一番上のクエリは、ステートメントごとに 1 つのレコードしか持たないテーブルを検索します。そのため、顧客に 7 つのステートメントがある場合、行数は 7 で、クエリはそれらを 1,2,3,4,5,6 のようにリストします。 、7
一番下のクエリは、上記のように 7 つのステートメントを含むテーブルを検索しますが、多くの場合、それらは分割されます。したがって、各ステートメントに 2 行ある場合、14、つまり 1,1,2,2, 3,3,4,4,5,5,6,6,7,7
今、私が達成しようとしているのは次のとおりです。上部のクエリはそのままで問題ありませんが、下部のクエリは区別する必要があります。一番下の画像の結果番号 2 を見てください。これを 1,2,3,4,5,6,7,8,9,10 として返したいと思います。
ステートメントがそれぞれ 8 と 4 になった特定のインスタンスがあった場合、1、2、3、4、5、6、7、8 が必要になります。基本的に、ほとんどの場合、一番下のクエリのステートメント番号を複製しています。結果全体を個別にオクロスしたいのですが、個別に入力しようとしましたが、選択項目にオーダーバイアイテムを含める必要があると不平を言っていますステートメントが個別に含まれていると、クエリが台無しになります。
これら 2 つのクエリの最終的な目的は、上位の結果セットを下位の結果セットと比較し、一致しないものだけを戻すことです (つまり、上位のクエリ テーブルにステートメントがないことを意味します)。
--Shows the each consolidated statement number that exisits for that particular customer reference number within the dbo.rss table.
Select Main.cust_ref,
Left(CAST(Main.consolidatedstatements as varchar(max)),Len(CAST(Main.consolidatedstatements as varchar(max)))-1) As "consolidatedstatements"
From(Select distinct ST2.cust_ref,
(Select CAST(ST1.consolidated_stmt_num as varchar(max)) + ',' AS [text()]
From dbo.rss ST1
Where ST1.cust_ref = ST2.cust_ref
ORDER BY ST1.cust_ref
For XML PATH ('')) [consolidatedstatements]
From dbo.rss ST2) [Main]
--Shows the each consolidated statement number that exisits for that particular customer reference number within the dbo.SC table.
Select Main.cust_ref,
Left(CAST(Main.consolidatedstatements as varchar(max)),Len(CAST(Main.consolidatedstatements as varchar(max)))-1) As "consolidatedstatements"
From(Select distinct ST2.cust_ref,
(Select CAST(ST1.consolidated_stmt_num as varchar(max)) + ',' AS [text()]
From dbo.SC ST1
Where ST1.cust_ref = ST2.cust_ref
ORDER BY ST1.cust_ref
For XML PATH ('')) [consolidatedstatements]
From dbo.SC ST2) [Main]