我希望显示这样的数据,如果索赔表在2015年出现,那么它应该基于该日期的值。 否则它应该是Null
我的日期增量代码:
Declare @t table (dt date)
declare @dt datetime, @dtEnd datetime
set @dt = '2015-01-01'
set @dtEnd = dateadd(mm, 1, @dt)
INSERT @t(dt)
select dateadd(mm, number, @dt)
from
(select distinct number from master.dbo.spt_values
where name is null and number < 12
) n
where dateadd(day, number, @dt) < @dtEnd
select dt from @t
Declare @Claim table(val varchar(10),dt date,qty int)
insert into @Claim(val,dt,qty)values
('plumbing','2015-01-01 00:00:00.000',32),
('Antique','2014-09-04 00:00:00.000',32),
('show','2013-10-01 00:00:00.000',32),
('valet','2015-09-01 00:00:00.000',32)
必需输出:
dt qty val
2015-01-01 32 plumbing
2015-02-01 NULL
2015-03-01 NULL
2015-04-01 NULL
2015-05-01 NULL
2015-06-01 NULL
2015-07-01 NULL
2015-08-01 NULL
2015-09-01 32 valet
2015-10-01 NULL
2015-11-01 NULL
2015-12-01 NULL
日期应该在2015年,那么价值应该是否则在2014年或2013年的日期为空?
答案 0 :(得分:0)
请检查下面,我现在没有sql-server验证。但这会给你一个想法。
select CAST(dt as DATE) as dt
, SUM(CASE WHEN EXTRACT(YEAR FROM dt) = 2015 THEN qty ELSE NULL END) AS qty
, (CASE WHEN EXTRACT(YEAR FROM dt) = 2015 THEN val ELSE NULL END) AS val
FROM Claim GROUP BY dt, val;
答案 1 :(得分:0)
您还可以将年份函数与案例陈述一起使用..
select dt, qty, val, (case when year(dt)='2015' then val else null end) newval from @claim
答案 2 :(得分:0)
试试这个,
if (RadioBTN.IsChecked == true) {
RadioBTN.IsChecked = false;
}
或
select t.dt,qty,val from @t t
left join @Claim t1
on
cast(t.dt as varchar(7))=cast(t1.dt as varchar(7))
答案 3 :(得分:0)
最简单的解决方案:
{{1}}
dt是您的日期列