交叉表的實現,

2021-03-31 08:56:58 字數 1272 閱讀 4042

表如下:

a    b

-------------

a   10

b   5

a   5

c   4

c   8

怎麼用sql語句變成

a   b    c

---------

15    5    12

declare @sql varchar(8000)

set @sql=''

select @sql=@sql+'['+rtrim(a)+']=sum(case a when '''+rtrim(a)+''' then b else 0 end),'

from table1 group by a

set @sql=left(@sql,len(@sql)-1)

print @sql

exec('select '+@sql+ '  from table1')

create table jzlist(兒童 varchar(10),疫苗 varchar(10),預種日期 datetime)

insert into jzlist

select '武紹陽','卡介苗','2001-02-03'

union all select '武紹陽','糖 丸','2001-03-25'

union all select '武紹陽','乙 肝','2001-04-06'

union all select '寧 遠','卡介苗','2002-08-03'

union all select '寧 遠','糖 丸','2002-11-25'

union all select '寧 遠','乙 肝','2002-12-23'

union all select '李小穎','卡介苗','2003-01-03'

union all select '李小穎','糖 丸','2003-04-26'

union all select '李小穎','乙 肝','2003-05-01'

go--查詢處理:

declare @s varchar(8000)

set @s=''

select @s=@s+',['+疫苗+']=max(case when 疫苗='''+疫苗+''' then convert(char(10),預種日期,120) end)'

from (select distinct 疫苗 from jzlist) aa

exec('select 兒童' +@s+' from jzlist group by 兒童')

go

動態交叉表的實現

declare sql varchar 8000 set sql select makedate,select sql sql sum case status when status then status else 0 end as status from select distinct stat...

動態交叉表的實現

create procedure corsstab strtabname as varchar 50 employees 此處放表名 strcol as varchar 50 city 表頭分組依據欄位 strgroup as varchar 50 titleofcourtesy 分組欄位 strn...

Sql交叉表簡單實現

最近碰到一需求,是醬紫的 一個銷售商品表,每年每月每天都賣出n種不同種類的商品,最後要統計每月每種商品的銷售額.或每年的,在此我模擬建立了一個簡單的表,主要說明經驗和大家一塊分享,若發現有問題,歡迎隨時指教.如下 此表過於簡單,主要用於說明交叉表 按某一年的多月查詢結果如下 多年對比查詢結果如下 具...

SQL實現動態交叉表 用遊標實現

set quoted identifier on goset ansi nulls on goalter procedure crosstable strtablename as varchar 50 查詢表 strcol as varchar 50 strgroup as varchar 50 分...

交叉表的建立及交叉表資料排序設定

交叉表的建立及交叉表資料排序設定 本文詳細講述一下如何建立交叉表以及交叉表的一些簡單定製 水晶報表9.2,同樣適用於水晶報表10 含 及以下版本 準備 首先你要知道什麼是交叉表,又是在什麼情況下需要用交叉表 交叉表 物件是一個網格,用來根據指定的條件返回值。資料顯示在壓縮行和列中。這種格式易於比較資...