sql server分類彙總問題

2021-06-26 18:11:43 字數 5301 閱讀 3568

1樓:匿名使用者

create table test_b (name char(10),a char(10),b int,c nvarchar(200))

insert test_b select '張三','語文',98,'超長髮揮'

insert test_b select '張三','數學',78,'一般'

insert test_b select '張三','英語',88,'發揮失常'

create function functionname_testb (@name char(10))

returns nvarchar(2000)

as begin

declare @s nvarchar(2000)

set @s=''

select @s=@s+','+c from test_b where name=@name

return (stuff(@s,1,1,'')) end

select name, sum(b) ,dbo.functionname_testb(name) from test_b group by name

2樓:

首先t2中科目就有問題,如果t2中沒有科目這一列的話,sql語句應該是這個樣子的:

select t.姓名,sum(成績) as 總成績,(select 評語 from t1 as t,t1 as t2 where t.姓名 = t2.

姓名 and t.科目 = 語文)||、||(select 評語 from t1 as t,t1 as t2 where t.姓名 = t2.

姓名 and t.科目 = 數學)||、||(select 評語 from t1 as t,t1 as t2 where t.姓名 = t2.

姓名 and t.科目 = 英語)as 總評語 from t1 as t ,t1 as t2 where t.姓名 =t2.

姓名;給你排下版吧!看起來有點繁瑣:

select t.姓名,sum(成績) as 總成績,

(select 評語 from t1 as t,t1 as t2 where t.姓名 = t2.姓名 and t.科目 = 語文)||、||

(select 評語 from t1 as t,t1 as t2 where t.姓名 = t2.姓名 and t.科目 = 數學)||、||

(select 評語 from t1 as t,t1 as t2 where t.姓名 = t2.姓名 and t.科目 = 英語)as 總評語

from t1 as t ,t1 as t2

where t.姓名 =t2.姓名;

希望有幫到你,正確望採納!!!!

3樓:雲天英雄

檢查一下select 語句,可以指定t1表,

4樓:匿名使用者

你這個關聯就有問題,科目那一列

sql 分類彙總查詢語句

5樓:匿名使用者

醉含笑的很牛,不過sum(pay)有點需要改動最終完美版:

select min(id) as 序號,max(dept) as 部門,

sum(case when zt='01' or zt='02' then pay else 0 end) 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(zt) as 總數

from aac

group by dept

6樓:醉含笑

select min(id) as 序號,

max(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(zt) as 總數

from 表名

group by dept

這段**是sqlserver和oracel通用,其中“表名”的地方,換成你的表名

喔看掉了這個條件:我現在想統計01、02兩種狀態的數量和pay合計

還是 zjwssg提醒,但最後兩個sum中when後面,建議還是加單引號吧

把上面的**改為這樣應該沒問題了

select min(id) as 序號,

max(dept) as 部門,

sum(case when zt='01' or zt='02' then pay else 0 end) 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(zt) as 總數

from 表名

group by dept

7樓:我tm不管

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

以上,希望對你有所幫助

8樓:

select

row_number() over(order by a.dept) 序號,

a.dept 部門,

a.合計,

b.個數01,

c.個數02,

d.總數

from

(select dept,sum(pay) 合計 from t where zt='01' or zt='02' group by dept) a,

(select dept,count(pay) 個數01 from t where zt='01' group by dept) b,

(select dept,count(pay) 個數02 from t where zt='02' group by dept) c,

(select dept,count(pay) 總數 from t group by dept) d

where a.dept=b.dept and b.dept=c.dept and c.dept=d.dept

參照樓上的寫法,改進一下有:

select

row_number() over(order by dept) 序號,

dept as 部門,

sum(case when zt='01' or zt='02' then pay else 0 end) 合計,

sum(case when zt='01' then 1 else 0 end) as 個數01狀態,

sum(case when zt='02' then 1 else 0 end) as 個數02狀態,

count(*) as 總數

from t

group by dept

9樓:匿名使用者

如果你用的是sql server可以:

select 序號=identity(int,1,1),dept as 部門,sun(pay) as 合計,sum(case when zt='01' then 1 else 0 end) as 個數01狀態,sum(case when zt='02' then 1 else 0 end) as 個數02狀態,count(*) as 總數 into #tmp_total from yourtablename group by dept

select * from #tmp_total 就得到你要的效果了你要說是在什麼資料庫下,資料庫不同寫法也是有一定差別的

10樓:世界大同喵

create table tb (id int,dept varchar(10),pay int,zt int)

insert tb select 1,'辦公室',20,1

union all select 2,'局領導',10,2

union all select 3,'辦公室',40,3

union all select 4,'局領導',10,1

union all select 5,'辦公室',50,1

union all select 6,'局領導',10,2

union all select 7,'辦公室',20,2

union all select 8,'局領導',10,2

select identity(int,1,1) as 序號,

dept as 部門,

sum(case when zt='01' or zt='02' then pay else 0 end) 合計,

sum(case when zt='1' then 1 else 0 end) 個數01狀態,

sum(case when zt='2' then 1 else 0 end) 個數02狀態,

count(*) as 總數 into #temp from tb group by dept

select * from #temp

11樓:匿名使用者

select a.dept,a.pay,c.[01],c.[02],b.ztnum

from

(select dept,sum(pay) as pay from table_1 where zt in(01,02) group by dept

)aleft join

(select dept,count(zt) as ztnum from table_1 group by dept

) bon a.dept=b.dept

left join

(select *

from

(select dept,zt,count(zt) as ztnum from table_1 where zt in(01,02) group by dept,zt)a

pivot

(sum(a.ztnum)

for a.zt in ([01],[02])

) as tpivot

) con b.dept=c.dept

如何製作分類彙總後的餅圖,如何製作分類彙總後的餅圖

關鍵是分類彙總後,選擇二級顯示 行號左側 然後選擇 部門 和 實發工資 兩列,建立圖表。圖表型別 圖表選項 圖表標題,資料標誌 圖表位置。excel裡面有,可以自動生成。你自己找一下 excel 先分類彙總,後製作餅圖的 資料怎麼選啊。2 資料輸入到excel 中之後,就可以製作餅圖了。在excel...

sql server中如何實現這樣的彙總查詢

select a.城市名稱,sum isnull case when 產品名稱 方便麵 then 銷量 end 0 方便麵,sum isnull case when 產品名稱 洗髮水 then 銷量 end 0 洗髮水,sum isnull case when 產品名稱 礦泉水 then 銷量 en...

sql server安裝問題

安裝2005要先檢查本機的安裝環境是否符合要求,在光碟的安裝目錄不是有個 安裝前什麼什麼的檢查工作 你讓它先檢查下,一般盜版的xp系統有以下不足 dom 沒啟動,iis服務沒驅動或沒安裝,登錄檔的鍵值不符合。你必須要先解決這幾個問題才能安裝完全。不知道樓主進行檢查過沒 你要裝這個軟體最好不要用gho...