Sql Server 2000 行轉(zhuǎn)列的實(shí)現(xiàn)(橫排)
我們用到的表結(jié)構(gòu)如下:
三張表的關(guān)系為:
現(xiàn)有的測(cè)試數(shù)據(jù)為:
我們需要的結(jié)果是:
DECLARE @strSQL VARCHAR(8000)
SET @strSQL = 'SELECT t.STUNAME [姓名]'
SELECT @strSQL = @strSQL + ',SUM(CASE s.SNAME WHEN ''' + SNAME + ''' THEN g.[Score] END) [' + SNAME + ']' FROM (SELECT SNAME FROM [Subject]) AS tmp
SELECT @strSQL = @strSQL + ' FROM [Score] g,[Subject] s, [Student] t WHERE g.SID=s.SID AND g.STUID = t.STUID GROUP BY t.STUID, t.STUNAME'
EXEC(@strSQL)
SQL SERVER 2005 中,已經(jīng)有實(shí)現(xiàn)此功能的內(nèi)置方法了。
相關(guān)文章
如何把sqlserver數(shù)據(jù)遷移到mysql數(shù)據(jù)庫(kù)及需要注意事項(xiàng)
由于項(xiàng)目起初用的是sqlserver數(shù)據(jù)庫(kù),后來(lái)改用了mysql數(shù)據(jù)庫(kù),那么如何把sqlserver遷移mysql呢?對(duì)sqlserver數(shù)據(jù)庫(kù)遷移感興趣的朋友可以參考下本篇文章2015-10-10SqlServer實(shí)現(xiàn)類似Oracle的before觸發(fā)器示例
本節(jié)主要介紹了SqlServer如何實(shí)現(xiàn)類似Oracle的before觸發(fā)器,需要的朋友可以參考下2014-08-08一條SQL語(yǔ)句修改多表多字段的信息的具體實(shí)現(xiàn)
修改兩張及以上表的時(shí)候,總得需要用幾次語(yǔ)句才修改,萬(wàn)一其中一條沒(méi)修改上,又沒(méi)事務(wù)機(jī)制的話,處理很麻煩,下面為大家介紹下使用一條SQL語(yǔ)句修改多表多字段的信息2014-01-01SQLSERVER收集語(yǔ)句運(yùn)行的統(tǒng)計(jì)信息并進(jìn)行分析
例如語(yǔ)句的編譯時(shí)間、執(zhí)行時(shí)間、做了多少次磁盤(pán)讀等,如果DBA能夠把問(wèn)題語(yǔ)句單獨(dú)測(cè)試運(yùn)行,可以在運(yùn)行前打開(kāi)下面這三個(gè)開(kāi)關(guān),收集語(yǔ)句運(yùn)行的統(tǒng)計(jì)信息。這些信息對(duì)分析問(wèn)題很有價(jià)值,感興趣的朋友可以了解下2013-01-01SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
數(shù)據(jù)庫(kù)的使用過(guò)程中由于程序方面的問(wèn)題有時(shí)候會(huì)碰到重復(fù)數(shù)據(jù),重復(fù)數(shù)據(jù)導(dǎo)致了數(shù)據(jù)庫(kù)部分設(shè)置不能正確設(shè)置2013-05-05數(shù)據(jù)庫(kù)Left join , Right Join, Inner Join 的相關(guān)內(nèi)容,非常實(shí)用
Left join , Right Join, Inner Join 的相關(guān)內(nèi)容,非常實(shí)用2009-07-07一個(gè)函數(shù)解決SQLServer中bigint 轉(zhuǎn) int帶符號(hào)時(shí)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決SQLServer中bigint 轉(zhuǎn) int帶符號(hào)時(shí)報(bào)錯(cuò)問(wèn)題的函數(shù),需要的朋友可以參考下2014-08-08