當前位置:首頁 » 編程語言 » sql進行分類匯總
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql進行分類匯總

發布時間: 2023-05-04 23:08:44

㈠ 關於使用sql語句sum(case when……)來實現分類匯總功能

有兩處有筆誤,如果結果不同的話,需要檢查一下,先對比下總金額,再對比各個的銷售額,再檢查姓名是否完全一致,EXCEL中經常有前後空格或是不容易顯示出來的字元會有影響,用select 月份,姓名,sum(銷售數量*產品單價) from 表格 group by 月份,姓名

例如:

select

月份,

sum(casewhen銷售人員='姓名1'then銷售數量*產品單價else0end)as姓名1銷售額,

sum(casewhen銷售人員='姓名2'then銷售數量*產品單價else0end)as姓名1銷售額,

sum(casewhen銷售人員='姓名3'then銷售數量*產品單價else0end)as姓名1銷售額

from表格

groupby月份,銷售人員

(1)sql進行分類匯總擴展閱讀:

注意事項

case when有用兩種用法如下:

用法一:

CASE case_value

WHEN when_value THEN statement_list

[WHEN when_value THEN statement_list] ...

[ELSE statement_list]

END CASE

用法二:

CASE

WHEN search_condition THEN statement_list

[WHEN search_condition THEN statement_list] ...

[ELSE statement_list]

END CASE

㈡ 就SQL如何將不同行的數據分類匯總到列

將不同行的數據分類匯總到列語句如下:

1)insert into table1 select * from table2

2) select into table 1 select *from table2

這兩種寫法有什麼區別吶,首先insert into這種寫法必須有table1列,select則是在access中必須不能存在table1,否則在ado介面中會出現報錯的現象。

進行資料庫的操作,這里使用的是ado+access進行的資料庫的操作,目前來看,ado這種方式還算是比較簡單。

㈢ 跪求,sql命令實現分類匯總統計

--1.建表
CreateTableT
(
地區Varchar(10),
姓名Varchar(10),
性別Varchar(2),
名族Varchar(10),
單位類型Varchar(50)
)

--2.插入測試數據
InsertIntoTValues('北京','張三','男','漢族','企業')
InsertIntoTValues('天津','李四','女','回族','公務員')
InsertIntoTValues('上海','王五','男','漢族','事業單位')
InsertIntoTValues('東北','周一','女','壯族','創業')
InsertIntoTValues('北京','李二','男','藏族','公務員')

--3.查詢結果
Declare@ForinVarchar(4000)='[男],[女]'
Declare@FieldVarchar(4000)='Isnull(男,0)AS男,Isnull(女,0)As女'

--動態拼接名族
Select@Forin=@Forin+',['+名族+']',
@Field=@Field+',Isnull('+名族+',0)As'+名族
From
(
SelectDistinct名族FromT
)S
--動態拼接單位類型
Select@Forin=@Forin+',['+單位類型+']',
@Field=@Field+',Isnull('+單位類型+',0)As'+單位類型
From
(
SelectDistinct單位類型FromT
)S

--分別按地區性別,地區名族和地區單位類型分組統計人數,然後再行列轉換
Exec
(
'Select項目,'+@Field+'From
(
Select地區As項目,性別As值,Count(*)As人數FromTGroupBy地區,性別
UnionAll
Select地區As項目,名族As值,COUNT(*)As人數FromTGroupBy地區,名族
UnionAll
Select地區As項目,單位類型As值,COUNT(*)As人數FromTGroupBy地區,單位類型
)s
Pivot
(
Max(人數)
For值in('+@Forin+')
)pvt'
)

㈣ sql如何在多個表中的數據分類匯總到一個表裡

create proc Mypro
as
begin
declare @t table(個人編號 varchar(10),工資 money,養老保險 money,年金 money,住房公積金 money)
insert into @t(個人編號,工資,養老保險,年金) select * from 表一
insert into @t select * from 表二
insert into @t select * from 表三
delete from @t where
exists(select * from @t where exists(select 個人編號,工資,養老保險,年金 from @t group by 個人編號,工資,養老保險,年金 having Count(*)>1) and 住房公積金 is null)
declare @t1 table(個人編號 varchar(10),工資 money,養老保險 money,年金 money,住房公積金 money)
insert into @t1 select distinct * from @t
select 個人編號,
sum(工資) as工資總和,avg(工資) as工資平均值,
sum(養老保險) as 養老保險總和,avg(養老保險) as 養老保險平均值,
sum(年金) as 年金總和,avg(年金) as 年金平均值,
sum(住房公積金) as 住房公積金總和,avg(住房公積金) as 住房公積金平均值
from @t1 group by 個人編號
end

--存儲過程直接查詢出你想要的數據,因為不知道你要總匯總和還是總匯平均值,你自己改下
--然後執行 insert into 表四 exec Mypro 插入你的表四吧

㈤ SQL分類匯總

首先SLQ語句不會呈現你這種EXCEL的小計合計分類顯示,SQL顯示行數據必須保持列欄位一致性。所以建議你將小計列寫個SUM的子查詢,以客戶名稱為關鍵字拼接,那麼你最後顯示的結果是:客戶名稱,客戶類型,規格型號,數量,金額,小計數量,小計金額。
總結:SQL結果行顯示形式必須和列欄位一致,小計合計必然通過其他軟體做處理

㈥ 怎麼用SQL語句對表【收支表】進行分類匯總

--建立測試表 並插入數據

-- 執行一個查詢 ,你可以寫在一個存儲過程裡面,我困了,不過格式按照你說的寫好了

CREATETABLETB
(說明NVARCHAR(20)
,
類別NVARCHAR(20),
金額INT,
款項類別NVARCHAR(20)
)


INSERTINTOdbo.TB
(說明,類別,金額,款項類別)
VALUES(N'項目A',--說明-nvarchar(20)
N'支出',--類別-nvarchar(20)
900,--金額-int
N'費用B'--款項類別-nvarchar(20)
)


INSERTINTOdbo.TB
(說明,類別,金額,款項類別)
VALUES(N'項目A',--說明-nvarchar(20)
N'收入',--類別-nvarchar(20)
2000,--金額-int
N'收入A'--款項類別-nvarchar(20)
)


INSERTINTOdbo.TB
(說明,類別,金額,款項類別)
VALUES(N'項目B',--說明-nvarchar(20)
N'支出',--類別-nvarchar(20)
3500,--金額-int
N'費用C'--款項類別-nvarchar(20)
)


INSERTINTOdbo.TB
(說明,類別,金額,款項類別)
VALUES(N'項目C',--說明-nvarchar(20)
N'支出',--類別-nvarchar(20)
200,--金額-int
N'費用D'--款項類別-nvarchar(20)
)

INSERTINTOdbo.TB
(說明,類別,金額,款項類別)
VALUES(N'項目A',--說明-nvarchar(20)
N'支出',--類別-nvarchar(20)
300,--金額-int
N'費用A'--款項類別-nvarchar(20)
)

CREATETABLE#temp
(
說明NVARCHAR(20),
類別NVARCHAR(20),
金額INT,
款項類別NVARCHAR(20)
)

INSERTINTO#temp
SELECT*
FROMdbo.TB
UNIONALL
SELECT說明,
CASEWHEN說明ISNOTNULLTHENISNULL(類別,'收支凈值')
ELSE類別
END+'合計'AS類別,
SUM(CASEWHEN類別='收入'THEN金額
ELSE-金額
END)AS金額,
MAX(款項類別)AS款項類別
FROMTB
WHERE說明ISNOTNULL
GROUPBYROLLUP(說明,類別)
ORDERBY說明INSERT#temp
SELECTB.*
FROM(SELECTDISTINCT
說明,
'收入合計'AS類別,
0AS金額,
''AS款項類別
FROM#temp
WHERE說明ISNOTNULL
)B
WHEREB.說明+B.類別NOTIN(SELECT說明+類別
FROM#temp
WHERE說明ISNOTNULL)

INSERT#temp
SELECTB.*
FROM(SELECTDISTINCT
說明,
'支出合計'AS類別,
0AS金額,
''AS款項類別
FROM#temp
WHERE說明ISNOTNULL
)B
WHEREB.說明+B.類別NOTIN(SELECT說明+類別
FROM#temp
WHERE說明ISNOTNULL);
WITHtt
AS(SELECT說明,
類別,
CASEWHEN類別='支出合計'THENABS(金額)
ELSE金額
ENDAS金額,
CASEWHEN類別='收入'
OR類別='支出'THEN款項類別
ELSE''
ENDAS款項類別,
CASEWHEN類別='支出'THEN1
WHEN類別='收入'THEN2
WHEN類別='收入合計'THEN3
WHEN類別='支出合計'THEN4
WHEN類別='收支凈值合計'THEN5
ELSE6
ENDASnum
FROM#temp
WHERE說明ISNOTNULL
)

SELECTtt.說明,
tt.類別,
tt.金額,
tt.款項類別
FROMtt
ORDERBY說明,
num

DROPTABLE#temp

㈦ sql 實現 二級 分類匯總

設數據簡略如圖:分類匯總後,選中「C」列,按「F5」——「定位條件」——「空值」,如圖:——「確定」——輸入「=」——按「↑」——按「Ctrl」+「Enter」,如圖:點,效果如圖:不知雖不是你要的效果。

㈧ sql 分類匯總查詢語句

select dept as 部門,sum(pay) as 合計,sum(case zt when '01'then 1 else 0 end) as 個數(01狀態),
sum(case zt when '02'then 1 else 0 end) as 個數(02狀態),count(*) as 總數
from 表 group by dept

以上,希望對你有所幫助

㈨ SQL條件分類匯總

只會點SQL 語句,寫下來看看!代碼如下:
1:
select 用戶號,sum(收入) as 家庭收入,社區名 from shequbiao
group by 用戶號,社區名
2:
先創建一個帶參數的存儲過程:
create procere 存儲過程名
@id char(4)

as

update shequbiao set 社區名=(select 社區名 from shequbiao where 用戶類型='戶主'and 用戶號=@id )
where 用戶號=@id

然後執行:
exec 存儲過程名 參數

3:
select 用戶號 , sum(收入) as 家庭總收入,count(*)as 家庭總人數 ,用戶名=(select 用戶名 from shequbiao aa where 用戶類型='戶主'and aa.用戶號=bb.用戶號)
from shequbiao bb
group by 用戶號
order by sum(收入) desc