2017-04-04 33 views
0

如何編寫我的查詢以檢索數據顯示如果客戶在同一註冊地點提供服務,則每人每天提供一項服務在當天的不同登記地點提供,應顯示服務。如果客戶在同一地點提供服務,則每人每天一項服務

PS:el =登記位置,sl =服務位置,服務日期是datetime2,因此出現不同時間。

實例的原始數據

ClientID serviceID clientname  sl   el   service date 
    1   112   sam   atlanta  atlanta  04/01/2017 
    1   113   sam   atlanta  atlanta  04/01/2017 
    1   114   sam   augusta  atlanta  04/01/2017 
    1   115   sam   atlanta montgomery  04/01/2017 
    1   116   sam   atlanta atlanta  04/02/2017 
    2   117   joy   delaware delaware  04/02/2017 
    2   118   joy   delaware delaware  04/02/2017 

Expected result for service dates between 04/01/2017 and 04/03/2017 

ClientID serviceID clientname  sl   el   service date 
    1   112   sam   atlanta  atlanta  04/01/2017 
    1   114   sam   augusta  atlanta  04/01/2017 
    1   115   sam   atlanta montgomery  04/01/2017 
    1   116   sam   atlanta atlanta  04/02/2017 
    2   118   joy   delaware delaware  04/02/2017
+0

只是做SELECT DISTINCT客戶端ID,服務ID,Cluentname,SL,EL FROM YourTablr –

+0

對不起錯別字,我的手機上面鍵入。也應該包含在上面的服務數據列 –

回答

0

一種選擇這裏是使用GROUP BY解決重複的記錄。如果我正確地閱讀了您的問題,則每個客戶應該只有一條記錄,服務地點,註冊地點和給定日期。這意味着,我們應該GROUP BY以下的列:

ClientID, clientname, sl, el, [service date] 

注意,我包括clientname以及因此,這可以在結果集中出現。對於serviceID,我隨意選擇每個組的最小值,這似乎與您所期望的一致。

SELECT 
    ClientID, 
    MIN(serviceID) AS serviceID, 
    clientname, 
    sl, 
    el, 
    [service date] 
FROM yourTable 
GROUP BY 
    ClientID, 
    clientname, 
    sl, 
    el, 
    [service date] 
+0

非常感謝蒂姆,但它並沒有伎倆,你看到它的一個長腳本,我將用於SSRS和所有這些列分組,,,,,你有另一種方法我可以試試。感謝你所做的一切。 –

+0

@HenryAmadi另一種方法是使用'ROW_NUMBER()',但即使在這種情況下,我們也需要列出分區的相同列。你應該給出一個更好的例子來更真實地反映你的實際問題。 –