首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问怎么把下面的SQL合并到一句SQL里

2012-01-22 
请教如何把下面的SQL合并到一句SQL里请教如何把下面的SQL合并到一句SQL里,多谢了--查询日期前进货和进货退

请教如何把下面的SQL合并到一句SQL里
请教如何把下面的SQL合并到一句SQL里,多谢了

--查询日期前进货和进货退货量,及其总额
Select sum(case 类型 when '进货单' then 数量 else 0 end) As 进货量,
  sum(case 类型 when '进货单' then 数量*单价 else 0 end) As 进货总额,
  sum(Case 类型 When '进货退货单' Then 数量 Else 0 End) As 进货退货量, 
  sum(case 类型 when '进货退货单' then 数量*单价 else 0 end) As 货退货总额
  From 进货退货 Where 日期 < @StartDate

--查询日期前调入,调出量,及其总额
Select sum(case 类型 when '调入单' then 数量 else 0 end) As 调入量,
  sum(case 类型 when '调入单' then 数量*单价 else 0 end) As 调入总额,
  sum(Case 类型 When '调出单' Then 数量 Else 0 End) As 调出量, 
  sum(case 类型 when '调出单' then 数量*单价 else 0 end) As 调出总额
  From 调拨 Where 日期< @StartDate


--查询日期时间段内进货和进货退货量,及其总额
Select sum(case 类型 when '进货单' then 数量 else 0 end) As 进货量,
  sum(case 类型 when '进货单' then 数量*单价 else 0 end) As 进货总额,
  sum(Case 类型 When '进货退货单' Then 数量 Else 0 End) As 进货退货量, 
  sum(case 类型 when '进货退货单' then 数量*单价 else 0 end) As 货退货总额
  From 进货退货 Where 日期 Between @StartDate And @EndDate

--查询日期时间段内调入,调出量,及其总额
Select sum(case 类型 when '调入单' then 数量 else 0 end) As 调入量,
  sum(case 类型 when '调入单' then 数量*单价 else 0 end) As 调入总额,
  sum(Case 类型 When '调出单' Then 数量 Else 0 End) As 调出量, 
  sum(case 类型 when '调出单' then 数量*单价 else 0 end) As 调出总额
  From 调拨 Where 日期 Between @StartDate And @EndDate

[解决办法]
用union all联结起来就行了。 。

[解决办法]

SQL code
--查询日期前进货和进货退货量,及其总额 Select sum(case 类型 when  '进货单 ' then 数量 else 0 end) As 进货量,        sum(case 类型 when  '进货单 ' then 数量*单价 else 0 end) As 进货总额,        sum(Case 类型 When  '进货退货单 ' Then 数量 Else 0 End) As 进货退货量,         sum(case 类型 when  '进货退货单 ' then 数量*单价 else 0 end) As 货退货总额,       item = '查询日期前进货和进货退货量,及其总额'       From 进货退货 Where 日期  < @StartDate union all--查询日期前调入,调出量,及其总额 Select sum(case 类型 when  '调入单 ' then 数量 else 0 end) As 调入量,        sum(case 类型 when  '调入单 ' then 数量*单价 else 0 end) As 调入总额,        sum(Case 类型 When  '调出单 ' Then 数量 Else 0 End) As 调出量,         sum(case 类型 when  '调出单 ' then 数量*单价 else 0 end) As 调出总额 ,       item = '查询日期前调入,调出量,及其总额'       From 调拨 Where 日期 < @StartDate union all--查询日期时间段内进货和进货退货量,及其总额 Select sum(case 类型 when  '进货单 ' then 数量 else 0 end) As 进货量,        sum(case 类型 when  '进货单 ' then 数量*单价 else 0 end) As 进货总额,        sum(Case 类型 When  '进货退货单 ' Then 数量 Else 0 End) As 进货退货量,         sum(case 类型 when  '进货退货单 ' then 数量*单价 else 0 end) As 货退货总额,       item = '查询日期时间段内进货和进货退货量,及其总额'       From 进货退货 Where 日期 Between @StartDate And @EndDate union all--查询日期时间段内调入,调出量,及其总额 Select sum(case 类型 when  '调入单 ' then 数量 else 0 end) As 调入量,        sum(case 类型 when  '调入单 ' then 数量*单价 else 0 end) As 调入总额,        sum(Case 类型 When  '调出单 ' Then 数量 Else 0 End) As 调出量,         sum(case 类型 when  '调出单 ' then 数量*单价 else 0 end) As 调出总额 ,       item = '查询日期时间段内调入,调出量,及其总额 '       From 调拨 Where 日期 Between @StartDate And @EndDate
[解决办法]
union all 连接
[解决办法]
给个数据啊 看得我头都大了
[解决办法]
使用 UNION 组合两个查询的结果集的两个基本规则是: 

所有查询中的列数和列的顺序必须相同。
数据类型必须兼容。 

热点排行