簡體   English   中英

查看同一表中某列中某行中的記錄

[英]Viewing records in a Row in a column from the same Table

我正在創建一個視圖以顯示其中包含合同日期的記錄。

該視圖的數據來自兩個表,一個存儲客戶端詳細信息,另一個存儲日期信息。

日期主題將存儲在DateCol列中,DateCol列的ID來自TypeID,例如118等於合同開始日期,119等於結束日期。 這將返回大約250個結果。

我建立的視圖針對客戶端ID運行查找,並顯示date_type中的日期(即118和119顯示01/01/2012和01/03/2012)。 如果我添加第三列顯示120,結果總數將減少為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' ) 

好的,首先,您應該列出所需的實際列名,而不要使用* 我相信您只需要將INNER JOIN更改為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上似乎有重復的條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM