關於統計的乙個sql問題,使用動態sql語句實現。

2021-04-17 10:16:25 字數 1688 閱讀 2666

問題出自:http://community.csdn.net/expert/topic/3495/3495537.xml?temp=.9028894

原來表內容:

姓名    年齡          班級        

----- ----------- ----------

張三    11          高一(2)

李四    12          高一(1)

王五    12          高一(2)

趙六    12          高一(2)

想得到的結果:

高一(1)       高一(2)      

----------- -----------

1           3

--測試:

create

table

tb(姓名 

varchar(5

), 年齡 

int, 班級 

varchar(10

))insert

into

tbselect'張三

',11,

'高一(2)

'union

allselect'李四

',12,

'高一(1)

'union

allselect'王五

',12,

'高一(2)

'union

allselect'趙六

',12,

'高一(2)

'--原始資料

select

*from

tb--如果班級並不多,可以靜態指出列的個數

select

'高一(1)'=

sum(

case

when班級=

'高一(1)

'then

1else

0end

),'高一(2)'=

sum(

case

when班級=

'高一(2)

'then

1else

0end

)from

tb--如果班級比較多,而且不知道班級名稱,使用下面動態語句

declare

@sql 

varchar

(8000

)set@sql=''

select

@sql

=case

when

@sql=''

then

@sql+'

sum(case 班級 when 

'''+班級+

'''then 1 else 0 end) as ['+

班級+']

'else

@sql+'

,sum(case 班級 when 

'''+班級+

'''then 1 else 0 end) as ['+

班級+']

'end

from

tbgroup

by班級 

order

by班級 

ascexec('

select '+

@sql+'

from tb')

--刪除測試表

drop

table

tb

乙個關於SQL關聯條件問題

問題如下,以下兩段指令碼的執行計畫是否相同?指令碼一 select from t1 join t2 on t1.v1 t2.v2 and t1.v2 指令碼二 select from t1 join t2 on t1.v1 t2.v2 where t1.v2 在內連線時,兩段執行指令碼的執行計畫相同...

關於RubyMine使用的乙個問題

前幾天,我開啟rubymine的時候遇到了一件很不爽的事情,那就是所有新建的index.html.erb全部變成了純文字格式,沒有語法加亮也沒有語法提示.這個讓我很惱火,不過經過百般努力最終是搞定了.感謝萬能的google.這個到底是啥情況呢,原來是我在不知道啥時候點錯了啥東西導致rubymine中...

關於乙個sql的寫法

需求是這樣的 有個學生表 create table student id int primary key,name varchar2 200 有個成績表 create table score id int 對應與student 的 id 僅為測試,表結構也沒好好設計 math int,eng int...