2017-05-18 12 views
0

私はいくつかの支援が必要です。私は自分のDBからデータを取り出す必要があります。今はFD_DocumentsテーブルとFD_Revisionテーブルがあります。2つのテーブルを一致させると真または偽のインジケータ

両方のテーブルのGUIDと一致する必要があります。また、一致が一度成立すると、結果内に新しい列を追加しなければなりません。一致する基準がない場合は「0」。

私は以下のように書いていますが、それは私に結果を与えません。

select Case when EXISTS (
     SELECT FD_Documents.GUID, 
     FD_Documents.FD_C231FD9A as [Store], 
     FD_Documents.FD_97CDB35A as [Store 2], 
     FD_Documents.FD_8B9BD5C6 as [Transaction Date], 
     FD_Documents.FD_84A4EF1A as [Account Number], 
     FD_Documents.FD_1A3D602F as [Name], 
     FD_Documents.FD_F8EFD019 as [Date of Birth], 
     FD_Documents.FD_9DAADEC8 as [Document Type], 
     FD_Documents.FD_8B43AE0B as [Year], 
     FD_Documents.FD_E77BE253 as [File Name] 
     FROM FD_Documents, FD_Revisions 
     WHERE FD_Documents.GUID = FD_Revisions.GUID 
     AND FD_Documents.Deleted = '0' 
     AND FD_Revisions.Revision < '3') 
     THEN CAST(1 as bit) 
     ELSE CAST(0 AS bit) END 
+0

をテストしていないとして、このクエリはちょうど左(カウントを有する、参加を使用し、より具体的な可能性があり、私は確かに言うことはできませんが、それはアイデアです)条項..選択したビットの場合 – Veljko89

+0

こんにちは@ Veljko89、あなたの応答をありがとう、あなたのスクリプトを追加して精巧にできます、これはよく評価されることができます。 – user3309798

+0

あなたは '2より大きいリビジョンにする必要がありますが、クエリはFD_Revisions.Revision <' 3 ' - それですか? –

答えて

2

私はFD_Documents.Deletedがintまたはビット(あなたのポストのようではない文字列)であり、そのリビジョンがintである(とは対照的に、あなたの質問の説明のように2以上でなければならないと仮定していますあなたのコード)、

SELECT FD_Documents.GUID, 
    FD_Documents.FD_C231FD9A as [Store], 
    FD_Documents.FD_97CDB35A as [Store 2], 
    FD_Documents.FD_8B9BD5C6 as [Transaction Date], 
    FD_Documents.FD_84A4EF1A as [Account Number], 
    FD_Documents.FD_1A3D602F as [Name], 
    FD_Documents.FD_F8EFD019 as [Date of Birth], 
    FD_Documents.FD_9DAADEC8 as [Document Type], 
    FD_Documents.FD_8B43AE0B as [Year], 
    FD_Documents.FD_E77BE253 as [File Name], 
    CASE ISNULL(FD_Revisions.GUID,'') WHEN '' THEN 0 ELSE 1 END AS IsMatching 
    FROM FD_Documents LEFT JOIN FD_Revisions 
    ON FD_Documents.GUID = FD_Revisions.GUID 
    AND FD_Documents.Deleted = 0 
    AND FD_Revisions.Revision > 2 
+0

FD_Documentに別のクローズが追加されたばかりです。新しいリビジョンがあるたびにリビジョンテーブルに記録するためです。どうもありがとうございます – user3309798

0

は、これはあなたが

select f.GUID from FD_Documents f 
inner join FD_Revisions r on f.GUID = r.GUID 
where f.Deleted = '0' and r.Revision>2 
group by f.GUID 
0

を必要とし、あなたにこの

01のようなものを状態のGUIDの明確なリストを提供します
SELECT FD_Documents.GUID, 
     FD_Documents.FD_C231FD9A as [Store], 
     FD_Documents.FD_97CDB35A as [Store 2], 
     FD_Documents.FD_8B9BD5C6 as [Transaction Date], 
     FD_Documents.FD_84A4EF1A as [Account Number], 
     FD_Documents.FD_1A3D602F as [Name], 
     FD_Documents.FD_F8EFD019 as [Date of Birth], 
     FD_Documents.FD_9DAADEC8 as [Document Type], 
     FD_Documents.FD_8B43AE0B as [Year], 
     FD_Documents.FD_E77BE253 as [File Name], 
    case when r.GUID IS NULL then 1 else 0 end [MatchCount] 
    FROM FD_Documents d 
     LEFT JOIN FD_Revisions r on d.GUID = r.GUID AND FD_Revisions.Revision > '2' 
    where FD_Documents.Deleted = '0' 

あなたには、いくつかの試験データを提供する場合、このクエリは

関連する問題