SQL 行轉列的辦法

2021-04-18 02:46:42 字數 902 閱讀 5765

編號    國家    數量   類別

001     中國    100    a

002     中國    300    b

003     中國    400    c

004     美國    200    a

005     美國    100    b

006     美國    50     c

007     中國    110    a

008     美國    80     b

一條sql語句生成以下結果:

國家    a總數   b總數    c總數

中國    210     300      400

美國    200     180      50

oracle 寫法(正確,試用了):  

select countryname,  sum(decode(classid,'a',qty)) as aqty,sum(decode(classid,'b',qty)) as bqty ,sum(decode(classid,'c',qty)) as cqty from mian where countryname in ('中國','美國')  group by countryname

sqlserver 寫法(正確,試用了)

select countryname as 國家, sum(case classid when 'a' then qty else 0 end)       as au1, sum(case classid when 'b' then qty else 0 end) as au2,       sum(case classid when 'c' then qty else 0 end) as au3from class_tablegroup by countryname

sql的行轉列

在弄資料包表的時候,我們常常會用到這個需求。在mysql中行轉列 新建乙個表,學生名字,課程,分數 drop table if exists student create table student username varchar 20 subjects varchar 20 score int ...

sql 行轉列問題

題目 下表tproduct某產品在各城市各月銷量情況 city name month no 月 qut qty 臺 杭州 9 100 杭州 10 120 上海 9 130 上海 10 140 請寫sql實現 如下查詢 city 9月銷量 10月銷量 杭州 100 120 上海 130 140 答案一...

SQL 行轉列總結

行轉列應該使用case 想要把某個行轉成列的列名 when 裡將各個列的值放進去 then 分組後某個值要進行彙總行 else 0 end 動態生成的話,將想要用的轉的,用selec查出來拼成以上格式就可以了 declare sql varchar 8000 如果大於8000只能用程式去拼乙個sql...