顯示數據時,將同列不同行的數據合並到其中一行的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

 

 歡迎知道好方法的大佬批評指教

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM