2011-09-30 55 views
1

我有一個SQL查詢應用不同的單柱

select distinct 
Process.ReportLogProcessID as [Process.ReportLogProcessID], 
Process.ProcessTitle as [Process.ProcessTitle], 
CAST(User0.PrimaryEmail AS nvarchar(max)) as [Process_Contacts.IsPrimaryContact] 

    from 
ReportProcess as Process inner join 
ReportProcessContact as ReportProcessContact0 on 
    ((ReportProcessContact0.SessionID = Process.SessionID)) left outer join 
[User] as User0 on 
    ((ReportProcessContact0.ReferenceID = User0.UserID)) left outer join 
[Group] as Group0 on 
    ((ReportProcessContact0.ReferenceID = Group0.GroupID and 
ReportProcessContact0.ReferenceType = 2)) 

order by 
[Process.ProcessTitle] asc 

,並在下面給出結果

enter image description here

,如果你看到它返回一個相同的「流程Title'-」兩行Testing123'有什麼辦法可以區分這一點,儘管無論是「Process Contact」。

是否有任何方法來區分特定列的基礎上的結果?

+2

所以這'email'它應該然後返回? –

+0

什麼是電子郵件ID,它應該只返回一行,無論是與[email protected]或[email protected],因爲兩者都有相同的過程標題 – BreakHead

+0

而你不在乎哪個?這是任意的? –

回答

1

在您的查詢[Process_Contacts.IsPrimaryContact]列中有兩個記錄的不同電子郵件。如果你刪除該列,那麼只有它會有不同的記錄。

UPDATE:你可以嘗試這樣的:

select 
     Process.ReportLogProcessID as [Process.ReportLogProcessID], 
     Process.ProcessTitle as [Process.ProcessTitle], 
     MAX(CAST(User0.PrimaryEmail AS nvarchar(max))) as [Process_Contacts.IsPrimaryContact] 
from ReportProcess as Process 
inner join ReportProcessContact as ReportProcessContact0 on 
     ((ReportProcessContact0.SessionID = Process.SessionID)) 
left outer join [User] as User0 on 
     ((ReportProcessContact0.ReferenceID = User0.UserID)) 
left outer join [Group] as Group0 on 
     ((ReportProcessContact0.ReferenceID = Group0.GroupID and 
     ReportProcessContact0.ReferenceType = 2)) 

group by Process.ReportLogProcessID, Process.ProcessTitle 
order by [Process.ProcessTitle] asc 
+0

我無法刪除該列 – BreakHead

+0

@BreakHead:然後,您需要添加group by子句並使用任何聚合函數來選擇任何一個電子郵件。 –

+0

謝謝,任何示例提及? – BreakHead