一張收款表,SQL資料橫列變豎列

時間 2023-01-07 05:00:14

1樓:

group一下就行了,把成績sum一下不就可以了。

如下,改成這樣就行了。

select @sql=@sql+',rtrim(課程)+'select isnull(sum(case b.課程 when ''課程+''then isnull(sum(b.成績),0) end ),0) from ddt b where b.

姓名=t.姓名 group by b.姓名, b.

課程)'from ddt

group by 課程。

order by 課程。

給你個例子,你看看吧。

有一個資料表(dtt)結構如下(課程數是不確定的,可能後面還有其他的):

姓名 課程 成績。

王藍璉 英語 76

王藍璉 語文 65

王藍璉 數學 65

李星顏 英語 86

李星顏 語文 54

李星顏 數學 76

葉夢雪 英語 56

葉夢雪 語文 88

葉夢雪 數學 86

朱紫雲 數學 64

朱紫雲 英語 88

現在查詢得出的資料表(rrt)如下:

姓名 語文 數學 英語 總計。

王藍璉 65 65 76 206

李星顏 54 76 86 216

葉夢雪 88 86 56 230

朱紫雲 64 88 152

sqlserver2005下測試成功!

declare @sql varchar(8000)

set @sql=''

select @sql=@sql+',rtrim(課程)+'select isnull(sum(case b.課程 when ''課程+''then isnull(b.成績,0) end ),0) from ddt b where b.

姓名=t.姓名)'

from ddt

group by 課程。

order by 課程。

set @sql='select t.姓名 as 姓名 '+sql+' sum(t.成績) as 總計 from ddt t group by t.姓名 '

exec(@sql)

2樓:哉瑛寵

可以先 select 一下 插入臨時表 做個彙總。

例如:select sum(要彙總的欄位) as 欄位名 into #臨時表 from 表名。

然後再 按 行轉列的方法 轉換。

這裡有 很詳細的 方法 看看吧。

3樓:匿名使用者

select cstname,sum(case when ysitemname='首期' then amount end) as '總首期滯納金',sum(case when ysitemname='樓款' then amount end) as '總樓款滯納金'

from 表2

group by cstname

這樣就ok了。

sql語句判斷一張表的某欄位為空,然後查詢另外一張表的資料,怎麼寫

樓上那個不行,應該是a沒有再找b 而不是連線2個表一起找樓主你的 的問題出在when id is null 你都輸入id 10289了 id怎麼會空?應該是select case when a.name is null thenb.name else a.name end name from sel...

SQL資料庫修改某張表主鍵的長度

在外碼錶設計中選擇 關係 將外碼引用的更新規則改為 級聯 後,即可修改。你這樣設定了以後你修改主碼錶的欄位長度,外碼錶對應的欄位長度會自動修改的。有外來鍵約束.先刪掉約束 再改 如果原表中有資料 1.建立臨時表 create table tmp bh int not null,name char 1...

關於excel,怎樣讓橫排的資料在另一張表上以縱列排列

我是來嚇寶寶的 如果只是把所有豎著的資料變成橫著的全寫在a列,方法如下 複製第一列,也就是豎著的名字那列 其實橫著的應該是abcde 在新的表的第一行,選擇性貼上 轉置,然後在下面的一行,輸入數字,1,3,5,7,右拉,你有多少個名字就拉多少 複製原表第二列,在新的表第一行,緊跟著名字的後面 選擇性...