1. sql 報表統計 總計小計
select 月份,電費,管理費,雜費,餐費,其他,總計 from
(select cast((month(DATE)) as char(2)) as 月份一,cast((month(DATE))as char(2)) as 月份,
sum(case when OUTPUT_STYTLE='電費' then AMOUNT else 0 end) as 電費,
sum(case when OUTPUT_STYTLE='管理費' then AMOUNT else 0 end) as 管理費,
sum(case when OUTPUT_STYTLE='雜費' then AMOUNT else 0 end) as 雜費,
sum(case when OUTPUT_STYTLE='餐費' then AMOUNT else 0 end) as 餐費,
sum(case when OUTPUT_STYTLE='其他' then AMOUNT else 0 end) as 其他,
sum(case when ID>0 then AMOUNT else 0 end ) as 總計
from DB_DAILY_OUTPUT where(year(DATE)='"+year+"') group by (month(DATE))
union
select '13' as 月份一,'合計' as 月份,
sum(case when OUTPUT_STYTLE='電費' then AMOUNT else 0 end) as 電費,
sum(case when OUTPUT_STYTLE='管理費' then AMOUNT else 0 end) as 管理費,
sum(case when OUTPUT_STYTLE='雜費' then AMOUNT else 0 end) as 雜費,
sum(case when OUTPUT_STYTLE='餐費' then AMOUNT else 0 end) as 餐費,
sum(case when OUTPUT_STYTLE='其他' then AMOUNT else 0 end) as 其他,
sum(case when ID>0 then AMOUNT else 0 end ) as 總計
from DB_DAILY_OUTPUT where(year(DATE)='"+year+"') )a
order by 月份一
2. sql怎麼講查詢結果求和如圖
你好,很高興回答你的問題。最簡單的就是把你的這個查詢當做一個子查詢來求和。
select sum(總計) from (你的查詢)
如果有幫助到你,請點擊採納。
3. sql 中怎麼把兩個總計結果都顯示在一個欄位里
有個 lpad 的函數可以左邊補0
4. 如何使用sql語句查詢出特殊的匯總結果
SELECT DISTINCTROW 員工,消費項目, Sum(數量) AS 總計
FROM zj_detial
GROUP BY 員工, 消費項目
ORDER BY 員工, 消費項目;
****************************************************
那個 第一個列的相同數據就不顯示了 我做不到
5. SQL欄位累加求和的問題
SELECT ID,STRING1,STRING2 from table UNION
select ID=0,string1=string1+'小計',countresult=count(1),sum1=sum(string2) from talbe group by string1 union
select ID=0,string1='總計',countresult=count(1),sum1=sum(string2) from table order by string1,id
結果為包括了小計和總計,和明細,並按順序排列
6. sql如何實現總計
算出總計行,使用unionall並起來就可以。但是這樣會算多一遍,建議計算總數還是放在後台代碼或者前端進行計算,這樣才比較節省性能。
SELECT
a.BUFullName'公司',
a.ProjName'項目',
a.BldName'樓棟',
a.count_num'總套數',
a.total'總按揭金額',
b.count_num'未完成套數',
b.total'未辦理金額'
FROM
(
SELECT
p2.BUFullName,
p1.ProjName,
p6.BldName,
count(p6.BldName)'count_num',
sum(p3.AjTotal)'total'
FROM
p_ProjectASp1
.BUGUID=p1.BUGUID
LEFTJOINs_SaleServiceASp4ONp4.ProjGUID=p1.p_Projectid
ANDp4.ServiceItemEnum='2'
RIGHTJOINs_ContractASp3ONp3.ContractGUID=p4.SaleGUID
ANDp3.StatusEnum='1'
INNERJOINs_RoomASp5ONp5.RoomGUID=p3.RoomGUID
INNERJOINs_BuildingASp6ONp6.BldGUID=p5.BldGUID
ANDp6.IsBld!='0'
WHERE
p1.p_Projectid=@projGUID
GROUPBY
p2.BUFullName,
p1.ProjName,
p6.BldName
)ASaleft
JOIN(
SELECT
j6.BldName,
count(j6.BldName)'count_num',
sum(j3.AjTotal)'total'
FROM
p_ProjectASj1
.BUGUID=j1.BUGUID
LEFTJOINs_SaleServiceASj4ONj4.ProjGUID=j1.p_Projectid
ANDj4.ServiceItemEnum='2'
ANDj4.ServiceProcCode='1'
RIGHTJOINs_ContractASj3ONj3.ContractGUID=j4.SaleGUID
ANDj3.StatusEnum='1'
INNERJOINs_RoomASj5ONj5.RoomGUID=j3.RoomGUID
INNERJOINs_BuildingASj6ONj6.BldGUID=j5.BldGUID
ANDj6.IsBld!='0'
WHERE
j1.p_Projectid=@projGUID
GROUPBY
j6.BldName,
j2.BUFullName,
j1.ProjName
)ASbONa.BldName=b.BldNameORDERBYa.BldName
unionALL
SELECT
'總計''公司',
'總計''項目',
'總計''樓棟',
sum(a.count_num)'總套數',
sum(a.total)'總按揭金額',
sum(b.count_num)'未完成套數',
sum(b.total)'未辦理金額'
FROM
(
SELECT
p2.BUFullName,
p1.ProjName,
p6.BldName,
count(p6.BldName)'count_num',
sum(p3.AjTotal)'total'
FROM
p_ProjectASp1
.BUGUID=p1.BUGUID
LEFTJOINs_SaleServiceASp4ONp4.ProjGUID=p1.p_Projectid
ANDp4.ServiceItemEnum='2'
RIGHTJOINs_ContractASp3ONp3.ContractGUID=p4.SaleGUID
ANDp3.StatusEnum='1'
INNERJOINs_RoomASp5ONp5.RoomGUID=p3.RoomGUID
INNERJOINs_BuildingASp6ONp6.BldGUID=p5.BldGUID
ANDp6.IsBld!='0'
WHERE
p1.p_Projectid=@projGUID
GROUPBY
p2.BUFullName,
p1.ProjName,
p6.BldName
)ASaleft
JOIN(
SELECT
j6.BldName,
count(j6.BldName)'count_num',
sum(j3.AjTotal)'total'
FROM
p_ProjectASj1
.BUGUID=j1.BUGUID
LEFTJOINs_SaleServiceASj4ONj4.ProjGUID=j1.p_Projectid
ANDj4.ServiceItemEnum='2'
ANDj4.ServiceProcCode='1'
RIGHTJOINs_ContractASj3ONj3.ContractGUID=j4.SaleGUID
ANDj3.StatusEnum='1'
INNERJOINs_RoomASj5ONj5.RoomGUID=j3.RoomGUID
INNERJOINs_BuildingASj6ONj6.BldGUID=j5.BldGUID
ANDj6.IsBld!='0'
WHERE
j1.p_Projectid=@projGUID
GROUPBY
j6.BldName,
j2.BUFullName,
j1.ProjName
)ASbONa.BldName=b.BldName
7. 用sql 如何實現 報表的分組的小計,合計!最後還有一個總計
如果要使用SQL來實現的話,可以採用臨時表,但是這樣必然會犧牲效率。
SELECT * INTO #TEMP FROM 表
INSERT INTO #TEMP VALUES(....) --這一句是你的小計、合計、總計
SELECT * FROM #TEMP
過程基本如此,需要注意的是臨時表欄位的類型,如果出現某欄位不允許為空的話,可以採用如下語句來變更欄位類型:
ALTER TABLE #TEMP
ALTER COLUMN 欄位名 類型 NULL
最後要注意的是排序,要使得小計、合計、總計在結果集的最後。
8. 資料庫中如何分類、分組並總計SQL數據
需要用group
by語句來統計。
1、創建測試表、插入數據:
createtabletest
(idint,
namevarchar(10),
scoreint,
classnamevarchar(20));
insertintotestvalues(1,'張三',100,'一班');
insertintotestvalues(2,'李四',89,'一班');
insertintotestvalues(3,'王五',97,'一班');
insertintotestvalues(4,'趙六',87,'二班');
insertintotestvalues(5,'孫七',94,'二班');
insertintotestvalues(6,'楊八',76,'二班');
2、查詢每個班級的總分,可用如下語句:
selectclassname,SUM(score)as總分fromtestgroupbyclassname;
3、結果截圖:
9. 如何得到SQL查詢總和
SELECT SUM(A.COL) FROM A;--求具體那一列的和值
SELECT COUNT(1) FROM A;--求查詢結果總數
10. 如何用SQL語句查詢出業務員每個月的業績和總計
IFOBJECT_ID('saleinfo')ISNOTNULLDROPTABLEsaleinfo
--創建模擬表
createtablesaleinfo(
idintidentity(1,1)primarykey,
salesmannvarchar(50)null,
salemonthnvarchar(50)null,
achievementint
)
--載入模擬數據
insertintosaleinfo(salesman,salemonth,achievement)values('A','1月5日',10)
insertintosaleinfo(salesman,salemonth,achievement)values('A','1月7日',20)
insertintosaleinfo(salesman,salemonth,achievement)values('A','2月4日',30)
insertintosaleinfo(salesman,salemonth,achievement)values('A','2月7日',40)
insertintosaleinfo(salesman,salemonth,achievement)values('A','3月2日',50)
insertintosaleinfo(salesman,salemonth,achievement)values('A','3月9日',60)
insertintosaleinfo(salesman,salemonth,achievement)values('B','1月5日',70)
insertintosaleinfo(salesman,salemonth,achievement)values('B','1月7日',80)
insertintosaleinfo(salesman,salemonth,achievement)values('B','2月4日',90)
insertintosaleinfo(salesman,salemonth,achievement)values('B','2月7日',10)
insertintosaleinfo(salesman,salemonth,achievement)values('B','3月2日',20)
insertintosaleinfo(salesman,salemonth,achievement)values('B','3月9日',30)
insertintosaleinfo(salesman,salemonth,achievement)values('C','1月5日',40)
insertintosaleinfo(salesman,salemonth,achievement)values('C','1月7日',50)
insertintosaleinfo(salesman,salemonth,achievement)values('C','2月4日',60)
insertintosaleinfo(salesman,salemonth,achievement)values('C','2月7日',70)
insertintosaleinfo(salesman,salemonth,achievement)values('C','3月2日',80)
insertintosaleinfo(salesman,salemonth,achievement)values('C','3月9日',90)
--顯示數據
selectsalesmanas業務員,salemonthas月份,achievementas業績fromsaleinfo
declare@sqlvarchar(8000)
set@sql='selectsalesmanas業務員'
select@sql=@sql+',sum(caseleft(salemonth,2)when'''+left(salemonth,2)+'''thenachievementelse0end)['+left(salemonth,2)+']'
from(selectdistinctleft(salemonth,2)assalemonthfromsaleinfo)asa
set@sql=@sql+',sum(achievement)as業績fromsaleinfogroupbysalesman'
exec(@sql)