sql server分類彙總問題

時間 2021-06-26 18:11:12

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

為什麼分類彙總前要進行排序,進行分類彙總工作之前為什麼首先要按照分類欄位排序

如果不排序,同類資料在表中多處出現,達不到分類彙總的目的。所以,分類彙總前要進行排序是必須的過程。進行分類彙總工作之前為什麼首先要按照分類欄位排序 程式裡的分百類彙總功能是必要做按分類欄位排序的,不然分度類彙總時會把分隔開的分類字知段作為另一類。但在實際工作中,對於比較複雜的道 可以利用函式sumi...

sql分類彙總查詢語句

醉含笑的很牛,不過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...

Excel excel分類彙總分類欄位有兩個怎麼辦

魚木混豬喲 工具 office2013 方法如下 在已經分類彙總的情況下,再次進行分類彙總 在彈出的對跨框中有個關鍵設定,勾選 替換當前分類彙總 則取消原來的分類彙總,只會當前欄位彙總 而如果取消勾選,則會出現兩個分類彙總欄位,知道了這點,就可以隨意設定是一個欄位彙總還是兩個欄位彙總了 excel分...