例:把同列不同行的數據值合並到其中的一行中
試了很多子查詢,都不行,想不出來了,最后用笨辦法給拼到一起
笨辦法:
-
先把表中的”電費峰、電費平、電費谷、車間電費“的記錄給過濾掉,顯示其他的所有數據
--語句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
歡迎知道好方法的大佬批評指教