日期:2014-05-18  浏览次数:20711 次

求一条或一组有点难度的MS SQL语句
A表各字段记录如下(称入货表)

id     code                 numb     numbname     type     datas               mons

1       IN07010009     G001     天和可乐     月结     2007/01/09     900
2       IN07010010     G003     天虹制衣     月结     2007/01/09     448
3       IN07010011     G003     天虹制衣     月结     2007/01/08     22
4       IN07010012     G003     天虹制衣     现金     2007/01/10     36
5       IN07010013     G003     天虹制衣     现金     2007/01/09     92


B表各字段记录如下(称入货付款表)

id     code                 datas               numb     numbname       mons

1       IN07010009     2007/01/09     G001     天和可乐       900
2       IN07010010     2007/01/09     G003     天虹制衣       200
3       IN07010010     2007/01/09     G003     天虹制衣       248
4       IN07010011     2007/01/08     G003     天虹制衣       22

表说明:
1、以A表为主表分离出相同供应商只列出一个名称
2、所要的结果如下排列,结果中,其实空白处为NULL的,为使看得清楚固把NULL去掉了
3、特别注意“天虹制衣”的排列结果,即同一供应商下的记录是要按日期由小到大排列的
4、特别注意“天虹制衣”的排列结果如下三行
      2007/01/09       448.00       月结     IN07010010         --> A表的记录
      NULL                   200.00       NULL     IN07010010         --> 此记录在B表按id小到大排列
      NULL                   248.00       NULL     IN07010010


如下为想要的结果

G001     天和可乐
                              2007/01/09       900.00       月结     IN07010009         --> A表的记录
                              NULL                   900.00       NULL     IN07010009         --> B表的记录
G003     天虹制衣
                              2007/01/08       22.00         月结     IN07010011
                              NULL                   22.00         NULL     IN07010011
                              2007/01/09       448.00       月结     IN07010010         --> A表的记录
&