2016-09-28 93 views
0

如何讓DISTINCT僅在'serviceType'結束?我試過聯盟並沒有用。SQL 2008中的DISTINCT語句

$tsql = "SELECT DISTINCT serviceType, product, provider, rate, qty, updated FROM contracts WHERE client='{$_POST['client']}' "; 

我需要看到最新的更新serviceType記錄與其餘的可用信息,但不是我做的每一個小的變化。但是,我想將這些更改保存爲一個存檔。

+0

你不需要得到*從合同訂單更新desc限制1? – juju

+1

@juju限制不是SQL Server。他們希望每個servicetype的最新行按照更新的列降序排列,我相信。因此,每個羣體問題都有很多最重要的問題。 –

+0

是的,這就是我需要的馬丁。我將開始研究解決方案,感謝您指引我朝着正確的方向發展。 –

回答

1

這是我會怎麼寫查詢的SQL Server:

SELECT distinct main.serviceType, b.product, b.provider, b.rate, b.qty, b.updated 
FROM contracts as main 
Outer Apply (Select Top 1 
        serviceType, product, provider, rate, qty, updated 
      FROM contracts as sub 
      where main.serviceType = sub.serviceType 
      Order by updated desc 
      ) b 
WHERE client= @client 
+0

謝謝Feryal!這非常接近,但由於某種原因選擇了最老的一個。我會嘗試和代碼一起玩,但這絕對是正確的方向。 –

0

好吧我知道了:

$tsql = "SELECT distinct main.serviceType, b.product, b.provider, b.rate, b.qty, b.updated 
    FROM contracts AS main 
    OUTER APPLY (SELECT TOP 1 
       serviceType, product, provider, rate, qty, updated 
       FROM contracts as sub 
       WHERE main.serviceType = sub.serviceType AND client='{$_POST['client']}' 
       ORDER BY ID DESC 
       ) b 

    WHERE client='{$_POST['client']}' "; 

感謝Feryal。我只需要將ORDER BY更改爲ID,因爲我在同一天進行了大量更改。