我有一个查询在上周选择[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个记录该日期
你好,抱歉,这是非常复杂的不是简单地插入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 –
请更新与完整查询的问题...不要留在这里的评论。 – Frazz
感谢迈克尔,但我使用循环计数的原因,因为它需要照顾的情况下,如果没有记录的网站,它仍然给我0作为计数 –