求一个SQL的写法
有一个折扣表,存储了每个月的消费卡的折扣,比如
年 月 卡类 折扣
2012 4 1 90%
2012 4 2 85%
每个月的卡类是固定的,比如都是1、2类卡
但不是每个月都有记录的,只是在要修改新折扣时才保存了修改的头一个月的记录,比如2013年2月份又去改了一次
2012 4 1 90%
2012 4 2 85%
2013 2 1 75%
2013 2 2 80%
系统从2012年1月开始算到最新日期,这时需要把所有中间间断的月份的记录补齐,补齐原则是看上一个月有没有,有就按卡类克隆上一个月的,如果没有就再往上走,如果一直没有,折扣就默认为100%,之前的就不需要补,
也就是没记录的月份代表这些折扣设置保持不变
所以最后的结果(是视图或存储过程而不是真的往表里填空缺的)应该是
2012 1 1 100%
2012 1 2 100%
2012 2 1 100%
2012 2 2 100%
2012 3 1 100%
2012 3 2 100%
2012 4 1 90%
2012 4 2 85%
2012 5 1 90%
2012 5 2 85%
2012 6 1 90%
2012 6 2 85%
2012 7 1 90%
2012 7 2 85%
2012 8 1 90%
2012 8 2 85%
2012 9 1 90%
2012 9 2 85%
2012 10 1 90%
2012 10 2 85%
2012 11 1 90%
2012 11 2 85%
2012 12 1 90%
2012 12 2 85%
2013 1 1 90%
2013 1 2 85%
2013 2 1 75%
2013 2 2 80%
年 月 卡类 折扣
2012 4 1 90%
2012 4 2 85%
每个月的卡类是固定的,比如都是1、2类卡
但不是每个月都有记录的,只是在要修改新折扣时才保存了修改的头一个月的记录,比如2013年2月份又去改了一次
2012 4 1 90%
2012 4 2 85%
2013 2 1 75%
2013 2 2 80%
系统从2012年1月开始算到最新日期,这时需要把所有中间间断的月份的记录补齐,补齐原则是看上一个月有没有,有就按卡类克隆上一个月的,如果没有就再往上走,如果一直没有,折扣就默认为100%,之前的就不需要补,
也就是没记录的月份代表这些折扣设置保持不变
所以最后的结果(是视图或存储过程而不是真的往表里填空缺的)应该是
2012 1 1 100%
2012 1 2 100%
2012 2 1 100%
2012 2 2 100%
2012 3 1 100%
2012 3 2 100%
2012 4 1 90%
2012 4 2 85%
2012 5 1 90%
2012 5 2 85%
2012 6 1 90%
2012 6 2 85%
2012 7 1 90%
2012 7 2 85%
2012 8 1 90%
2012 8 2 85%
2012 9 1 90%
2012 9 2 85%
2012 10 1 90%
2012 10 2 85%
2012 11 1 90%
2012 11 2 85%
2012 12 1 90%
2012 12 2 85%
2013 1 1 90%
2013 1 2 85%
2013 2 1 75%
2013 2 2 80%
...全文
相关推荐
DB2常用SQL写法
DB2还允许一些独特的SQL写法,例如,`AnyOneTable`表示任意一个存在的表,这在某些特定情况下非常有用。但需要注意,这种用法并不推荐在生产环境中频繁使用,因为可能会带来不必要的性能影响。
升级到MySQL5.7后开发不得不注意的一些坑
其次,分组求最值的写法可能在MySQL5.7中得到不同的结果。在早期版本中,比如MySQL5.6,对于一些分组求最大值或最小值的查询,可以通过简单的分组和排序实现预期结果。
Oracle函数_JDBC常用写法
**数学函数**:如`ROUND`用于四舍五入,`TRUNC`用于截断小数部分,`MOD`用于求余数。2.
经典SQL查询50题.pdf
通过对比这两种答案,我们可以看到实际应用中不同的SQL写法和可能的优化方法。
经典Excel_VBA_SQL语句
### 经典Excel_VBA_SQL语句:详细解析与应用实例#### A、根据本工作簿的1个表查询求和写法范本这部分内容提供了两种不同的VBA脚本,用于从当前工作簿的一个表格中提取数据并进行求和操作。


应用实例
