background image

 

代码

 1

 

DROP table #student

 2

 

CREATE TABLE #student (stdname nvarchar(

10

),stdsubject nvarchar(

10

),result 

int

)

 3

 

INSERT INTO #student VALUES (

'张三'

,

'语文'

,

80

)

 4

 

INSERT INTO #student values (

'张三'

,

'数学'

,

90

)

 5

 

INSERT INTO #student VALUES (

'张三'

,

'物理'

,

85

)

 6

 

INSERT INTO #student VALUES (

'李四'

,

'语文'

,

85

)

 7

 

INSERT INTO #student values (

'李四'

,

'数学'

,

92

)

 8

 

INSERT INTO #student VALUES (

'李四'

,

'物理'

,

82

)

 9

 

INSERT INTO #student VALUES (

'李四'

,

'化学'

,

82

)

10

 

INSERT INTO #student VALUES (

'李四'

,

'化学'

,

82

)

11

 

SELECT * FROM #student

 

 

 可能很多老手们,一看到这题目就有了答案。当然,贴出答案来不是我的目的,我要带着 SQL 新手们

重构到答案。用李建忠老师最爱说的话就是------我不建议一上来就套用模式,而应该从重构到模式。

首先大家会想到分两组

1

 select stdname,····,from #student group by stdname 

 

 

然后······中间该写什么呢?

§§

 

代码

case

 stdsubject when 

'化学'

 then Result end

case

 stdsubject when 

'语文'

 then Result end

case

 stdsubject when 

'···'

 then Result end

case

 stdsubject when 

'···'

 then Result end

case

 stdsubject when 

'···'

 then Result end