Select pinmin, shuyu , SUM(Case zhuangtai When '#' Then 1 Else 0 End) As [#] , SUM(Case zhuangtai When '$' Then 1 Else 0 End) As [$] , SUM(Case zhuangtai When '*' Then 1 Else 0 End) As [*] , SUM(Case zhuangtai When '@' Then 1 Else 0 End) As [@]
From table1 Group By zhuangtai-----你寫的這個語句,最後的Group By有點問題,應該是Group By pinmin, shuyu .這樣拼結出來的SQL語句就和你的那個是一樣的了。
From table1 Group By zhuangtai-----你寫的這個語句,最後的Group By有點問題,應該是Group By pinmin, shuyu .這樣拼結出來的SQL語句就和你的那個是一樣的了。
From table1 Group By zhuangtai --我的主要问题在这里上面这段语句是你写的.为什么会没错呢?
PRINT @S后是得到@S是:
Select pinmin, shuyu , SUM(Case zhuangtai When '#' Then 1 Else 0 End) As [#] , SUM(Case zhuangtai When '$' Then 1 Else 0 End) As [$] , SUM(Case zhuangtai When '*' Then 1 Else 0 End) As [*] , SUM(Case zhuangtai When '@' Then 1 Else 0 End) As [@]再加上后面一段FROM不是和我写的一样么.为什么我的有错.你的就没错
Select @S = @S + ' , Count(*) As zongshu From table1 Group By pinmin, shuyu Order By pinmin, shuyu'你加的是From table1 Group By zhuangtai)當然不一樣撒
From table1 Group By zhuangtai --我的主要问题在这里那你能解释一下.上面这一段为什么会有一个From table1 Group By zhuangtai结尾?
难道@S的结果不是:
Select pinmin, shuyu , SUM(Case zhuangtai When '#' Then 1 Else 0 End) As [#] , SUM(Case zhuangtai When '$' Then 1 Else 0 End) As [$] , SUM(Case zhuangtai When '*' Then 1 Else 0 End) As [*] , SUM(Case zhuangtai When '@' Then 1 Else 0 End) As [@]
From table1 Group By zhuangtai的结果....我的理解是这样的:
@S = Select pinmin, shuyu , SUM(Case zhuangtai When '#' Then 1 Else 0 End) As [#] , SUM(Case zhuangtai When '$' Then 1 Else 0 End) As [$] , SUM(Case zhuangtai When '*' Then 1 Else 0 End) As [*] , SUM(Case zhuangtai When '@' Then 1 Else 0 End) As [@]然后
Select @S From table1 Group By zhuangtai这条语句执行.
然后@S是Select @S From table1 Group By zhuangtai的结果集.
这个结果集再Select @S = @S + ' , Count(*) As zongshu From table1 Group By pinmin, shuyu Order By pinmin, shuyu'我知道自己理解有错.你能帮我分析一下过程吗..我真的有点晕.
From table1 Group By zhuangtai
這一段之後,@S的結果是
Select pinmin, shuyu , SUM(Case zhuangtai When '#' Then 1 Else 0 End) As [#] , SUM(Case zhuangtai When '$' Then 1 Else 0 End) As [$] , SUM(Case zhuangtai When '*' Then 1 Else 0 End) As [*] , SUM(Case zhuangtai When '@' Then 1 Else 0 End) As [@]From table1 Group By zhuangtai 這一段是得到table1中所有的zhuangtai的。你可以分段將@S print出來看。Declare @S Varchar(8000)
Select @S = 'Select pinmin, shuyu'
Print @SSelect @S = @S + ' , SUM(Case zhuangtai When ''' + zhuangtai + ''' Then 1 Else 0 End) As ' + QUOTENAME(zhuangtai)
From table1 Group By zhuangtai --我的主要问题在这里
Print @SSelect @S = @S + ' , Count(*) As zongshu From table1 Group By pinmin, shuyu Order By pinmin, shuyu'
Print @S
EXEC(@S)
GO
Select @S = @S + ' , SUM(Case zhuangtai When ''' + zhuangtai + ''' Then 1 Else 0 End) As ' + QUOTENAME(zhuangtai)
From table1 Group By zhuangtai
這一段之後,@S的結果是
Select pinmin, shuyu , SUM(Case zhuangtai When '#' Then 1 Else 0 End) As [#] , SUM(Case zhuangtai When '$' Then 1 Else 0 End) As [$] , SUM(Case zhuangtai When '*' Then 1 Else 0 End) As [*] , SUM(Case zhuangtai When '@' Then 1 Else 0 End) As [@]From table1 Group By zhuangtai 這一段是得到table1中所有的zhuangtai的。也就是说From table1 Group By zhuangtai这一条语句是为上面的Select @S = @S + ' , SUM(Case zhuangtai When ''' + zhuangtai + ''' Then 1 Else 0 End) As ' + QUOTENAME(zhuangtai) SELECT 递归服务的..有一点点感觉了.谢谢..我再想想..太感谢了.