SQL 交叉表查詢問題

時間 2023-03-10 05:30:10

1樓:深圳鐘叔

典型的豎表轉橫表。你去網上搜一下,很多這樣的**。

這個我之前有遇到過。想寫乙個sql直接實現,發現寫起來比較麻煩。最後,我直接用程式來實現。

先查詢出所有人名和科目,這裡可以用distinct。

接著建立一張二維表,列索引為人名,橫索引為學科,假設表名是datatable,則datatable[name][subject] 儲存的該科成績。

這麼做不會太難,時間複雜度是o(n),n為記錄的條數。不過如果資料多,空間上開銷肯定不行的。

而對於稀疏的表,這方法很不好。

不過因為我做的系統當時人數不到500,科目也不到20,就是可以承受的。

大資料的我也不知道怎麼做。

2樓:匿名使用者

較為複雜的行轉列。

表1:course

id name

1 語文。2 數學。

3 英語。表2:result

id sid course result

1 2005001 語文

2 2005001 數學

3 2005001 英語

4 2005002 語文

5 2005002 數學

6 2005002 英語

declare @sql varchar(8000)set @sql='select sid'

select @sql=@sql+',isnull(sum(case course when ''then result end),0)'

from course order by idset @sql=@sql+' from result group by sid order by sid'

print @sql

exec(@sql)

3樓:方清海

select sname,語文,數學。

from scores

pivot(max([score]) for subject in([語文],[數學])

) as t

sql問題,表的查詢問題,sql問題,三個表的查詢問題

select name from student a where not exists select 1 from takes b,course c where b.id a.id and b.course id c.course id and c.title b and exists select...

SQL跨表查詢的問題

select a.shopcode,a.cardid,rtrim b.buyername as name,a.cnt,a.moneysum,a.dtsum,0000 as pcname from select shopcode,cardid,buyerid,count pcname as cnt,s...

c 多個SQL查詢,sql 多個表合併查詢

你想改變查詢總得有乙個觸發事件吧!比如說點選button按鈕,那麼你就把。string sql2 select from jiaoliu2 myda new sqldataadapter sql2,sqlcon myds new dataset myds 寫在button按鈕事件裡。如果你想兩同時查...

sql查詢問題

a pc tran表有id吧?select count id from a pc tran where exchg amt 500 and cons no 要查詢的使用者編號 and exchg ym 3 查詢出特定使用者3月份繳費金額小於500的繳費記錄共多少次。select count id f...

為難的交叉表問題

select case when 企業類別 01a or 企業類別 02a then 01a,02a else 企業類別 end as 企業類別,count as 企業數量,sum 員工數 as 員工數,sum 出國人數 as 出國人數 from select a.企業名稱,a.企業類別,b.員工數...