2016-03-30 18 views
0

データベースから選択するコードは次のとおりですが、一意のIDごとに最初のレコードのみが必要です。これを達成するためにSQLを変更する方法はありますか?各IDから最初のSQL文のみを選択するようにこのSQL文を変更するにはどうすればよいですか?

SELECT  
     [CARL_Property].ID 
     ,[PrDoorNum] 
     ,[PrAddress1] 
     ,[PrAddress2] 
     ,[PrAddress3] 
     ,[PrAddress4] 
     ,[PrPostcode] 
     ,[PrRent] 
     ,[PrAgreedRent] 
     ,[PrCommence] 
     ,[PrEnd] 
     ,[PrAvailable] 
     ,[PrGrossIncome] 
     ,[PrCouncilTax] 
     ,[PrInventoryFee] 
     ,[PrLetFee] 
     ,[PrReletFee] 
     ,[PrDateWithdrawn] 
     ,[Rent Review] 
     ,CARL_Owners.OwForenames 
     ,CARL_Owners.OwSurname 
     ,CARL_Property_List.[ID] 
     ,CARL_Property_List.[PrId] 
     ,CARL_Property_List.[PLBedrooms] 
     ,CARL_Property_List.[PlRooms] 
     ,CARL_Property_List.[PlBathrooms] 
     ,CARL_Property_List.[PlReceptions] 
     ,CARL_Property_List.[PlDeposit] 
     ,CARL_Tenant_Contacts.[Tenant Name] 
     ,CARL_New_Tenants.[TnLeaseperiod] 
     ,CARL_Property_List.[PlAdvertising] 
     ,[CARL_Property_Memos].[PrNotes] 
     ,[CARL_Safety].[PrGasInsp] 
     from dbo.CARL_Property Join dbo.[CARL_Property_Memos] on CARL_Property.ID=CARL_Property_Memos.PrID Join dbo.CARL_Owners on CARL_Owners.ID=CARL_Property.OwID Join dbo.CARL_PROPERTY_LIST ON dbo.CARL_PROPERTY.ID=dbo.CARL_PROPERTY_LIST.PrId Join dbo.[CARL_New_Tenants] ON CARL_New_Tenants.PrId=CARL_Property.ID JOIN CARL_Tenant_Contacts ON CARL_New_Tenants.ID = CARL_Tenant_Contacts.TnID Join [dbo].[CARL_Safety] On dbo.CARL_Property.ID=dbo.CARL_Safety.PrID 

結果は以下のとおりです。

enter image description here

+1

あなたのスクリーンショットからは、テーブル結合内に多種多様性があるようです。クエリやFKの定義をさらに深く分析することをお勧めします。それ以外の場合は、SELECT DISTINCTまたはGROUP BYを使用して、一意の列にすることができます – alessalessio

+0

これはROW_NUMBERを使用すると非常に簡単です。あなたは単に "最初"を意味するものを定義する必要があります。定義によって、テーブルは順序付けられていないセットです。 –

答えて

0

私が考えるこれらの線に沿って何かは、あなたが探しているものです。また、メインクエリでエイリアスを使用しています。これは、これを作業するのがずっと簡単になり、たくさんのタイピングの量を減らします。

with SortedResults as 
(
    SELECT  
     cp.ID 
     , ROW_NUMBER() over(partition by cp.ID order by pl.ID) as RowNum --order by whatever column defines "first" 
     , [PrDoorNum] 
     , [PrAddress1] 
     , [PrAddress2] 
     , [PrAddress3] 
     , [PrAddress4] 
     , [PrPostcode] 
     , [PrRent] 
     , [PrAgreedRent] 
     , [PrCommence] 
     , [PrEnd] 
     , [PrAvailable] 
     , [PrGrossIncome] 
     , [PrCouncilTax] 
     , [PrInventoryFee] 
     , [PrLetFee] 
     , [PrReletFee] 
     , [PrDateWithdrawn] 
     , [Rent Review] 
     , o.OwForenames 
     , o.OwSurname 
     , pl.[ID] as PL_ID 
     , pl.[PrId] 
     , pl.[PLBedrooms] 
     , pl.[PlRooms] 
     , pl.[PlBathrooms] 
     , pl.[PlReceptions] 
     , pl.[PlDeposit] 
     , tc.[Tenant Name] 
     , nt.[TnLeaseperiod] 
     , pl.[PlAdvertising] 
     , pm.[PrNotes] 
     , cs.[PrGasInsp] 
    from dbo.CARL_Property p 
    Join dbo.[CARL_Property_Memos] pm on p.ID = pm.PrID 
    Join dbo.CARL_Owners o on o.ID = p.OwID 
    Join dbo.CARL_PROPERTY_LIST pl ON p.ID = pl.PrId 
    Join dbo.[CARL_New_Tenants] nt ON nt.PrId = p.ID 
    JOIN CARL_Tenant_Contacts tc ON nt.ID = tc.TnID 
    Join [dbo].[CARL_Safety] cs On p.ID = cs.PrID 
) 

select * 
from SortedResults 
where RowNum = 1 
order by ID 
+0

パーフェクト、いくつかの変更を加えて、私はこの仕事をしました。あなたはスターです。 –

関連する問題