当前位置: 代码迷 >> SQL >> SQL 替结果集增加列
  详细解决方案

SQL 替结果集增加列

热度:113   发布时间:2016-05-05 10:03:10.0
SQL 为结果集增加列

OA系统有个需求,需要将订单的支付(可能多次)显示在订单信息中,支付记录在另一张表,如下图

订单表:

订单号订单金额订单状态
D00000110000未缴清

支付记录表

支付编号订单号付款金额付款时间
1D00000120002015-8-10
2D00000110002015-8-11
3D00000150002015-8-12

?

现在我们要生成如下图的表:

订单号订单金额订单状态?1次到账?1次到账时间2次到账2次到账时间3次到账3次到账时间
?D000001?10000?未缴清?2000?2015-8-10?1000?2015-8-11?5000?2015-8-12

?

我想通过一条SQL实现这个查询

SELECT 订单号,订单金额,订单状态	,'1次到账'=(SELECT 付款金额 FROM(SELECT 付款金额 ,(row_number()OVER(ORDER BY 支付编号)) AS RowIndex FROM 支付记录表 WHERE 支付记录表.订单号=订单表.订单号) WHERE  T.RowIndex =1)	,'1次到账时间'=(SELECT 到账时间 FROM(SELECT 到账时间 ,(row_number()OVER(ORDER BY 支付编号)) AS RowIndex FROM 支付记录表 WHERE 支付记录表.订单号=订单表.订单号) WHERE  T.RowIndex =1)	,'2次到账'=(SELECT 付款金额 FROM(SELECT 付款金额 ,(row_number()OVER(ORDER BY 支付编号)) AS RowIndex FROM 支付记录表 WHERE 支付记录表.订单号=订单表.订单号) WHERE  T.RowIndex =2)	,'2次到账时间'=(SELECT 到账时间 FROM(SELECT 到账时间 ,(row_number()OVER(ORDER BY 支付编号)) AS RowIndex FROM 支付记录表 WHERE 支付记录表.订单号=订单表.订单号) WHERE  T.RowIndex =2)	,'3次到账'=(SELECT 付款金额 FROM(SELECT 付款金额 ,(row_number()OVER(ORDER BY 支付编号)) AS RowIndex FROM 支付记录表 WHERE 支付记录表.订单号=订单表.订单号) WHERE  T.RowIndex =3)	,'3次到账时间'=(SELECT 到账时间 FROM(SELECT 到账时间 ,(row_number()OVER(ORDER BY 支付编号)) AS RowIndex FROM 支付记录表 WHERE 支付记录表.订单号=订单表.订单号) WHERE  T.RowIndex =4)FROM 订单号

?当然,这个是模拟的书籍,其实开发环境中的查询结果是这个样子滴:



?

?

  相关解决方案