显示数据时,将同列不同行的数据合并到其中一行的sql

例:把同列不同行的数据值合并到其中的一行中

试了很多子查询,都不行,想不出来了,最后用笨办法给拼到一起

 

笨办法:

  1. 先把表中的”电费峰、电费平、电费谷、车间电费“的记录给过滤掉,显示其他的所有数据

    --语句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 ('电费尖','电费峰','电费平','电费谷','车间电费')
     
  2. 再单独写sql 计算“电费峰、电费平、电费谷、车间电费”的和

    --语句2
    1 select sum(MONEY) 
    2 from TABLE
    3 where GORETURN='1'  
    4 and CUSTOMERID=49 
    5 and COSTTERMNAME IN ('电费尖','电费峰','电费平','电费谷','车间电费')
     
  3. 写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
  4. 将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

 欢迎知道好方法的大佬批评指教

 

 

猜你喜欢

转载自www.cnblogs.com/wfg934dbk/p/13404815.html
今日推荐