【问题】
c# 和 SQL 按类和按日期查询出数据,
比如有表 table1 数据如下
id, type, year
1 33 2014 下半年
2 33 2014 下半年
3 33 2013 上半年
4 34 2013 上半年
要得到按 year 排序后按 type 排序,统计 year 数据,并且 year 没有的数据赋为 0,比如要得到如下结果:
year, no, type
2014 下半年 2 33
2014 上半年 0 33
2013 下半年 0 33
2013 上半年 1 33
2014 下半年 0 34
2014 上半年 0 34
2013 下半年 0 34
2013 上半年 1 34
【回答】
这种按固定序列对齐的运算,用 sql 写起来很麻烦,得用子查询拼出基准表再用 JOIN 去对齐,大概是这样:
select x._year, IFNULL(x._no,0), x._type from (
select a._year _year,b._no _no, a._type _type from (
with yt as (
select ‘2013 上半年’ _year from dual union all
select ‘2013 下半年’ _year from dual