我在几周内使用SQL中的DATEPART进行分组.但是,我想要包括空周,不仅仅包括数周.我有一个脚本可以完美地收集数周的数据,但不是空的周.我一直试图使用左外连接,但我的SQL技能并不是那么好.我决定问你们.
这是我的脚本:
select
DatePart(Year, MYTABLE.CREATION_DATE) as DateYear,
DatePart(Month, MYTABLE.CREATION_DATE) as DateMonth,
DatePart(Week, MYTABLE.CREATION_DATE) as DateWeek,
sum(cast(MYTABLE.BASE_TRANSACTION_VALUE as int)) as Value,
min(MYTABLE.CREATION_DATE) as DateT
from MYTABLE
where MYTABLE.SEGMENT2 like '00601'
and MYTABLE.SEGMENT4 like '%'
and MYTABLE.CREATION_DATE > '2012-12-30 12:00:00'
and MYTABLE.CREATION_DATE < '2013-12-30 11:00:00'
group by
DatePart(Year, MYTABLE.CREATION_DATE),
DatePart(Month, MYTABLE.CREATION_DATE),
DatePart(Week, MYTABLE.CREATION_DATE)
order by DateYear, DateMonth, DateWeek
Run Code Online (Sandbox Code Playgroud)
这是该脚本的结果.

在这种情况下,你们可以给我一个加入条款的例子吗?
[更新时间:2014-01-09 08:06 UTC]
您可以动态创建日期(DateRange),并将它们外部连接到您的选择,如下所示:
declare @startdate date;
set @startdate = '2012-12-30';
declare @enddate date;
set @enddate = '2013-12-30'
;with DateRange AS
(
SELECT
DatePart(Year, @startdate) as DateYear,
DatePart(Month, @startdate) as DateMonth,
DatePart(iso_Week, @startdate) as DateWeek,
@startdate as DateValue
UNION ALL
SELECT
DatePart(Year, dateadd(dd,7,DateValue)) as DateYear,
DatePart(Month, dateadd(dd,7,DateValue)) as DateMonth,
DatePart(iso_Week, dateadd(dd,7,DateValue)) as DateWeek,
dateadd(dd,7,DateValue)
FROM DateRange
WHERE dateadd(dd,7,DateValue) <= @enddate
), data as (
select
DatePart(Year, MYTABLE.CREATION_DATE) as DateYear,
DatePart(Month, MYTABLE.CREATION_DATE) as DateMonth,
DatePart(iso_Week, MYTABLE.CREATION_DATE) as DateWeek,
sum(cast(MYTABLE.BASE_TRANSACTION_VALUE as int)) as Value,
min(MYTABLE.CREATION_DATE) as DateT
from MYTABLE
where MYTABLE.SEGMENT2 like '00601'
and MYTABLE.SEGMENT4 like '%'
and MYTABLE.CREATION_DATE > '2012-12-30 12:00:00'
and MYTABLE.CREATION_DATE < '2013-12-30 11:00:00'
group by
DatePart(Year, MYTABLE.CREATION_DATE),
DatePart(Month, MYTABLE.CREATION_DATE),
DatePart(iso_Week, MYTABLE.CREATION_DATE)
)
select
DateRange.DateYear,
DateRange.DateMonth,
DateRange.DateWeek,
data.Value,
data.DateT
from data
right outer join
DateRange
on
data.DateYear = DateRange.DateYear
and data.DateWeek = DateRange.DateWeek
order by
DateRange.DateYear,
DateRange.DateMonth,
DateRange.DateWeek
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |