2014-04-24 184 views
0

我有一個查詢在上週選擇[orderdate]作爲網站。 我希望能夠在一天內爲一個給定的網站只選擇一條記錄。 我的解決方案如下:SQL Server每天選擇一條記錄

select 
    SiteName 
    , OrderDate 
from 
    Table1 
where 
    OrderDate >= dateadd(dd,(datediff(dd,-53690,getdate()-1)/7)*7,-53690) 

,但是當你看一下結果,你會發現日期爲21 SITE2它給出了兩個記錄。我只需要選擇一個。

SiteName..................OrderDate 

Site1....................2014-04-21 16:00:37.650 

Site2....................2014-04-21 16:00:39.697 

Site2....................2014-04-21 16:00:39.697 

Site3....................2014-04-21 16:00:35.180 




Site1....................2014-04-22 16:00:46.113 

Site2....................2014-04-22 16:00:50.817 

Site3....................2014-04-22 16:00:53.163 



Site1....................2014-04-23 16:00:50.993 

Site2....................2014-04-23 16:00:53.193 

Site3....................2014-04-23 16:00:55.727 

**編輯**問題

你好,抱歉,這是非常複雜的不是簡單地將不同。下面是包括整個查詢,但我最初只包括爲簡單起見,它的一部分:

select distinct 
     SiteName 
     ,SUM(Case 
      When 
       OrderDate >= dateadd(dd,(datediff(dd,-53690,getdate()-1)/7)*7,-53690) Then 
       1 
      Else 
       0 
      End 
     ) as Completed 
from 
     table1 
where 
     CLIENT in ('Site1','Site2','Site3','Site4','Site5','Site6','Site7') 
and 
     SiteName != '(Site8)' 
GROUP BY 
     SiteName 
order by 
     SiteName 

我只選擇7位,避免網站8 結果是

網站名稱...... ............已完成

Site1 ......................... 3

Site2 .......................... 4

Site3。 ......................... 3

Site4 ................... ....... 3

Site5 .......................... 3

Site6 ..... ..................... 2

Sit7 ....................... .... 2

站點2的數應該是3而不是4個,但儘管使用不同的查詢仍在增加2個記錄該日期

回答

0

我無法調試它,因爲我無法訪問SQL Server,所以它可能不會像這樣工作,但將其作爲一個想法。

select SiteName, count(SiteName) from 
    (
    select DISTINCT SiteName , OrderDate from Table1 where 
    OrderDate >= dateadd(dd,(datediff(dd,-53690,getdate()-1)/7)*7,-53690) 
    ) 
group by siteName; 

內部選擇將刪除重複項,而外部選擇項將計算該網站在那裏的次數。

+0

你好,抱歉,這是非常複雜的不是簡單地插入distinct.My糟糕了,我應該已經包含了整個查詢,但我只是爲了簡單起見,它的一部分,完整的查詢是如下選擇不同的網站名 , SUM(案例當訂購日期> = DATEADD(DD,(DATEDIFF(DD,-53690,GETDATE() - 1)/ 7)* 7,-53690) 然後1 否則0 完)從表1,其中CLIENT完成 ('Site1','Site2','Site3','Site4','Site5','Site6','Site7')我只選擇了7個避免si的網站te 8 –

+0

請更新與完整查詢的問題...不要留在這裏的評論。 – Frazz

+0

感謝邁克爾,但我使用循環計數的原因,因爲它需要照顧的情況下,如果沒有記錄的網站,它仍然給我0作爲計數 –

0
select DISTINCT SiteName , OrderDate from Table1 where 
OrderDate >= dateadd(dd,(datediff(dd,-53690,getdate()-1)/7)*7,-53690) 
+0

請解釋你的答案。只有代碼答案不能幫助任何人瞭解你在做什麼。 – RubberDuck

+0

@ ckuhn203:你是對的,在這種情況下唯一需要添加DISTINCT的結果是不同的。正如你所看到的,在例子中,對於Site2,我們有兩次'2014-04-21 16:00:39.697'!看看[這裏](http://www.w3schools.com/sql/sql_distinct.asp) – armen

相關問題