SQLServer count函数、cross apply和outer apply、

1、COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)
2、COUNT(*) 函数返回表中的记录数

select *
  from TABLE_1 T1
outer apply FN_TableValue(T1.column_a)

cross apply 和 outer apply 对于 T1 中的每一行都和派生表(表值函数根据T1当前行数据生成的动态结果集) 做了一个交叉联接。

cross apply 和outer apply 的区别在于: 如果根据 T1 的某行数据生成的派生表为空,cross apply 后的结果集 就不包含 T1 中的这行数据,而 outer apply 仍会包含这行数据,并且派生表的所有字段值都为 NULL。

方式一

SELECT year as 年份
 , sum (case when quarter = 'Q1' then amount else 0 end) 一季度
 , sum (case when quarter = 'Q2' then amount else 0 end) 二季度
 , sum (case when quarter = 'Q3' then amount else 0 end) 三季度
 , sum (case when quarter = 'Q4' then amount else 0 end) 四季度
  FROM SalesByQuarter GROUP BY year ORDER BY year DESC

方式二

SELECT year as 年份, Q1 as 一季度, Q2 as 二季度, Q3 as 三季度, Q4 as 四季度
  FROM SalesByQuarter PIVOT (SUM (amount) FOR quarter IN (Q1, Q2, Q3, Q4) ) AS P
 ORDER BY YEAR DESC

上一篇:关于如何提高Web服务端并发效率的异步编程技术


下一篇:C#与C++的发展历程第三 - C#5.0异步编程巅峰