显示数据时,将同列不同行的数据合并到其中一行的sql
例:把同列不同行的数据值合并到其中的一行中
试了很多子查询,都不行,想不出来了,最后用笨办法给拼到一起
笨办法:
-
先把表中的”电费峰、电费平、电费谷、车间电费“的记录给过滤掉,显示其他的所有数据
--语句1
1 select ID,CUSTNAME,ROOMNAME,COSTTERMNAME,MONTH,YSMONEY 2 from TABLE 3 where YSMONEY != 0 4 and GORETURN='1' 5 and CUSTOMERID=49 6 and COSTTERMNAME not in ('电费尖','电费峰','电费平','电费谷','车间电费')
-
再单独写sql 计算“电费峰、电费平、电费谷、车间电费”的和
--语句2
1 select sum(MONEY) 2 from TABLE 3 where GORETURN='1' 4 and CUSTOMERID=49 5 and COSTTERMNAME IN ('电费尖','电费峰','电费平','电费谷','车间电费')
-
写sql 单独查询出"车间电费",并将计算和的sql 作为子查询,查出来的结果赋值给“车间电费”
--语句3
1 select ID,CUSTNAME,ROOMNAME,COSTTERMNAME,MONTH,YSMONEY=(语句2) 2 from TABLE 3 where COSTTERMNAME='车间电费' 4 and GORETURN='1' 5 and CUSTOMERID=49
-
将sql合并查询
语句1
union all
语句3
完整的sql
1 select ID,CUSTNAME,ROOMNAME,COSTTERMNAME,MONTH,YSMONEY 2 from TABLE 3 where YSMONEY != 0 4 and GORETURN='1' 5 and CUSTOMERID=49 6 and COSTTERMNAME not in ('电费尖','电费峰','电费平','电费谷','车间电费') 7 union all 8 select ID,CUSTNAME,ROOMNAME,COSTTERMNAME,MONTH,YSMONEY=(select sum(MONEY) 9 from TABLE 10 where GORETURN='1' 11 and CUSTOMERID=49 12 and COSTTERMNAME IN ('电费尖','电费峰','电费平','电费谷','车间电费') 13 ) 14 from TABLE 15 where COSTTERMNAME='车间电费' 16 and GORETURN='1' 17 and CUSTOMERID=49
欢迎知道好方法的大佬批评指教
作者:命运使然
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。