当前位置: 代码迷 >> Sql Server >> 1查询语句提示:“子查询最多能返回一条记录”
  详细解决方案

1查询语句提示:“子查询最多能返回一条记录”

热度:97   发布时间:2016-04-24 10:36:04.0
一查询语句提示:“子查询最多能返回一条记录”
同题:
SELECT a.日期, a.部门, a.操作员, 
(select 金额 from 材料分析 where  CARGOTYPE_NAME="建工材料") AS 建工材料, 
(select 金额 from 材料分析 where CARGOTYPE_NAME="油脂") AS 油脂, 
(select 金额 from 材料分析 where CARGOTYPE_NAME="汽油") AS 汽油, 
(select 金额 from 材料分析 where CARGOTYPE_NAME="劳保用品") AS 劳保用品, 
(select 金额 from 材料分析 where CARGOTYPE_NAME="工具") AS 工具, 
(select 金额 from 材料分析 where CARGOTYPE_NAME="电料") AS 电料, 
(select 金额 from 材料分析 where CARGOTYPE_NAME="化工") AS 化工, 
FROM  FROM 材料分析 GROUP BY 日期,部门, 操作员, CARGOTYPE_NAME, 金额, 分类;

------解决方案--------------------
SELECT 日期, 部门, 操作员, 
(select MAX(金额) from 材料分析 where  CARGOTYPE_NAME="建工材料") AS 建工材料, 
(select MAX(金额) from 材料分析 where CARGOTYPE_NAME="油脂") AS 油脂, 
(select MAX(金额) from 材料分析 where CARGOTYPE_NAME="汽油") AS 汽油, 
(select MAX(金额) from 材料分析 where CARGOTYPE_NAME="劳保用品") AS 劳保用品, 
(select MAX(金额) from 材料分析 where CARGOTYPE_NAME="工具") AS 工具, 
(select MAX(金额) from 材料分析 where CARGOTYPE_NAME="电料") AS 电料, 
(select MAX(金额) from 材料分析 where CARGOTYPE_NAME="化工") AS 化工, 
FROM 材料分析 GROUP BY 日期,部门, 操作员;
------解决方案--------------------
你的子查询存在有多条记录的情况
------解决方案--------------------
把 金额 改成 SUM(金额) 试试
------解决方案--------------------
SELECT 日期, 部门, 操作员, 
(select sum(金额) from 材料分析 where  CARGOTYPE_NAME="建工材料") AS 建工材料, 
(select sum(金额) from 材料分析 where CARGOTYPE_NAME="油脂") AS 油脂, 
(select sum(金额) from 材料分析 where CARGOTYPE_NAME="汽油") AS 汽油, 
(select sum(金额) from 材料分析 where CARGOTYPE_NAME="劳保用品") AS 劳保用品, 
(select sum(金额) from 材料分析 where CARGOTYPE_NAME="工具") AS 工具, 
(select sum(金额) from 材料分析 where CARGOTYPE_NAME="电料") AS 电料, 
(select sum(金额) from 材料分析 where CARGOTYPE_NAME="化工") AS 化工, 
FROM 材料分析 GROUP BY 日期,部门, 操作员;

如果你是要求和的話需要加上sum,否則
select 金额 from 材料分析 where CARGOTYPE_NAME="化工" 可能會返回多行記錄,另外從你的語句的邏輯上看,是否求金額也是要限定日期部門合操作員,如果是的話要在子查詢中將條件也加上
  相关解决方案