我有一个查询,它会在上周为网站选择[orderdate]。 我希望能够在一天内仅为给定网站选择一条记录。 我的解决方案如下:
select
SiteName
, OrderDate
from
Table1
where
OrderDate >= dateadd(dd,(datediff(dd,-53690,getdate()-1)/7)*7,-53690)
,但是当您查看结果时,您会注意到对于site2的第21天,它会给出两条记录。我只需要选择一个。
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 结果是
SITENAME ..................完成
站点1 .......................... 3
站点2 .......................... 4
Site3 .......................... 3
Site4 .......................... 3
Site5 .......................... 3
Site6 .......................... 2
Sit7 ........................... 2
对于网站2,计数应为3而不是4,但尽管使用不同,但查询仍然为该日期添加了2条记录
答案 0 :(得分:0)
我无法调试它,因为我无法访问SQL服务器,所以它可能无法正常工作,但请将其作为一个想法。
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;
内部选择将删除重复项,外部选择将计算网站存在的次数。
答案 1 :(得分:0)
select DISTINCT SiteName , OrderDate from Table1 where
OrderDate >= dateadd(dd,(datediff(dd,-53690,getdate()-1)/7)*7,-53690)