1

契約日が含まれるレコードを表示するビューを作成しています。

このビューのデータは、クライアントの詳細を格納するテーブルと日付情報を格納するテーブルの2つのテーブルから取得されます。

テーマ自体の日付はDateCol列に格納され、DateCol列のIDはTypeIDから取得されます。たとえば、118は契約開始日、119は終了日です。これにより、約250の結果が返されます。

私が作成したビューは、クライアントIDに対してルックアップを実行し、date_typeからの日付を表示します(つまり、118と119は2012年1月1日と2012年1月3日を示します)。120を示す3番目の列を追加すると、結果の総数は6に減ります。

すべての結果を確認する必要がありますが、これらすべてを表示するビューを作成する方法がわかりません。Maximizerに対応しているため、元のデータベースを変更できません。

SQL 2005を使用しており、Management STudioを使用してこれを構築しましたが、私の知識は少し限られています。

これは私の見解のコードです:

SELECT * 
FROM   dbo.AMGR_Client_Tbl 
       INNER JOIN dbo.FOOTPRINTS_Companies_118 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_118.Client_Id 
       INNER JOIN dbo.FOOTPRINTS_Companies_119 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_119.Client_Id 
       INNER JOIN dbo.FOOTPRINTS_Companies_120 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_120.Client_Id 
       INNER JOIN dbo.FOOTPRINTS_Companies_121 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_121.Client_Id 
WHERE  ( dbo.AMGR_Client_Tbl.Record_Type = '1' ) AND ( dbo.AMGR_Client_Tbl.Name_Type = 'C' ) 
OR ( dbo.AMGR_Client_Tbl.Record_Type = '1' ) AND ( dbo.AMGR_Client_Tbl.Name_Type = 'C' ) 
4

1 に答える 1

0

わかりました。まず、ビューに必要な実際の列名をリストし、使用しないでください*INNER JOINsをsに変更するだけでよいと思いますLEFT JOIN。したがって、次のようになります。

SELECT [List Your Columns Here]
FROM   dbo.AMGR_Client_Tbl 
       LEFT JOIN dbo.FOOTPRINTS_Companies_118 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_118.Client_Id 
       LEFT JOIN dbo.FOOTPRINTS_Companies_119 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_119.Client_Id 
       LEFT JOIN dbo.FOOTPRINTS_Companies_120 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_120.Client_Id 
       LEFT JOIN dbo.FOOTPRINTS_Companies_121 
         ON dbo.AMGR_Client_Tbl.Client_Id = 
            dbo.FOOTPRINTS_Companies_121.Client_Id 
WHERE  ( dbo.AMGR_Client_Tbl.Record_Type = '1' ) AND ( dbo.AMGR_Client_Tbl.Name_Type = 'C' ) 
OR ( dbo.AMGR_Client_Tbl.Record_Type = '1' ) AND ( dbo.AMGR_Client_Tbl.Name_Type = 'C' ) 

WHEREまた、あなたはあなたに重複した状態があるように思われることに注意する必要があります。

于 2012-04-24T17:13:43.413 に答える