请问T-SQL 中一下语句中的函数的结果有什么作用!!!? 谢谢
createtable#year_sales(yearssmalldatetime,mmmoney)insert#year_salesselect'20090824',1...
create table #year_sales
(years smalldatetime,mm money)
insert #year_sales
select '20090824',10054.985 union all
select '20090624',100754.985 union all
select '20110824',34454.985
select '2009'=sum(mm*(1-abs(sign(year(years)-2009)))),'2010'=sum(mm*(1-abs(sign(year(years)-2010)))),
'2011'=sum(mm*(1-abs(sign(year(years)-2011)))) from #year_sales 展开
(years smalldatetime,mm money)
insert #year_sales
select '20090824',10054.985 union all
select '20090624',100754.985 union all
select '20110824',34454.985
select '2009'=sum(mm*(1-abs(sign(year(years)-2009)))),'2010'=sum(mm*(1-abs(sign(year(years)-2010)))),
'2011'=sum(mm*(1-abs(sign(year(years)-2011)))) from #year_sales 展开
展开全部
sum(mm*(1-abs(sign(year(years)-2009))))
sign()是比较括号内两个值大小的,如果括号内相减大于0返回1,等于0返回0,小于0返回-1.
abs()是取绝对值的函数。
abs(sign(year(years)-2009))那么这个判断就是如果years的年等于2009年,那么就是0,否则就是1。mm*(1-abs(sign(year(years)-2009))),就是如果是2009年的话,则取这一行mm的值,否则为0。外面加上sum是计算表中2009年的所有mm的值。
同样,后边两个是计算2010年,2011年的mm的合计值。
sign()是比较括号内两个值大小的,如果括号内相减大于0返回1,等于0返回0,小于0返回-1.
abs()是取绝对值的函数。
abs(sign(year(years)-2009))那么这个判断就是如果years的年等于2009年,那么就是0,否则就是1。mm*(1-abs(sign(year(years)-2009))),就是如果是2009年的话,则取这一行mm的值,否则为0。外面加上sum是计算表中2009年的所有mm的值。
同样,后边两个是计算2010年,2011年的mm的合计值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询