如何汇总我这个表!谢谢!

努力偷懒 2005-09-05 06:01:09
有表A(kind只有2种)
EM_ID TC_M DO_M Kind
1 5 10 1
2 3 10 1
3 2 10 2
2 12 20 2
3 4 30 1
1 7 15 2

结果表:
EM_ID TC_SUM_M1 DO_SUM_M1 TC_SUM_M2 DO_SUM_M2
1 5 10 7 15
2 3 10 12 20
3 2 10 4 30
这样一个结果
TC_SUM_M1就是kind=1的,TC_SUM_M2就是Kind=2的大家明白我的意思没?
先谢谢哦!
...全文
231 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MorningTea 2005-09-05
  • 打赏
  • 举报
回复
--用楼上几位高手的语句来拼接会语句更加间接一点哦
--修改
declare @str as varchar(6000) --用来存取动态sql
set @str=''
select @str = @str +',TC_SUM_M' + convert(varchar(2), A1.Kind) +
'=sum(case when kind =' + convert(varchar(2), A1.Kind) +
' then TC_M else 0 end),DO_SUM_M'+ convert(varchar(2), A1.Kind) + '=sum(case when kind =' +
convert(varchar(2), A1.Kind) +
' then DO_M else 0 end)'
from #A A1
group by A1.kind

set @str = stuff(@str,1,1,'')
set @str = 'select EM_ID,' + @str + ' from #A A1 group by A1.EM_ID'
--print @str
exec(@str)

/*
EM_ID TC_SUM_M1 DO_SUM_M1 TC_SUM_M2 DO_SUM_M2
----------- ----------- ----------- ----------- -----------
1 5 10 7 15
2 3 10 12 20
3 4 30 2 10

(3 row(s) affected)
*/
MorningTea 2005-09-05
  • 打赏
  • 举报
回复
--这个问题,我都是用动态sql,应付多个kind的问题!
create table #A (EM_ID int,TC_M int,DO_M int,Kind int)
insert into #A select 1,5,10,1
union all select 2,3,10,1
union all select 3,2,10,2
union all select 2,12,20,2
union all select 3,4,30,1
union all select 1,7,15,2

declare @str as varchar(6000) --用来存取动态sql
set @str=''
select @str = @str +',TC_SUM_M' + convert(varchar(2), A1.Kind) + '=(select TC_M from #A A2 where A2.EM_ID = A1.EM_ID
and A2.kind = ''' + convert(varchar(2), A1.Kind) + ''')' + ',DO_SUM_M' + convert(varchar(2), A1.Kind) + '=(select DO_M from #A A2 where A2.EM_ID = A1.EM_ID
and A2.kind = ''' + convert(varchar(2), A1.Kind) + ''')'
from #A A1
group by A1.kind

set @str = stuff(@str,1,1,'')
set @str = 'select EM_ID,' + @str + ' from #A A1 group by A1.EM_ID'
exec(@str)

/*
EM_ID TC_SUM_M1 DO_SUM_M1 TC_SUM_M2 DO_SUM_M2
----------- ----------- ----------- ----------- -----------
1 5 10 7 15
2 3 10 12 20
3 4 30 2 10
*/
col_wolf0724 2005-09-05
  • 打赏
  • 举报
回复
本人最近创了几个群,如有爱好者请进来聊聊
VC 15228918
软件设计师 1582507
网络高手 15471413
数据库 155322792
phantomMan 2005-09-05
  • 打赏
  • 举报
回复
是楼主的结果由问题
zlp321002 2005-09-05
  • 打赏
  • 举报
回复
--难道楼主数据有问题,还是我的算法有问题吗??
--测试环境
declare @表A table(EM_ID int,TC_M int,DO_M int,Kind int)
insert into @表A select 1,5,10,1
union all select 2,3,10,1
union all select 3,2,10,2
union all select 2,12,20,2
union all select 3,4,30,1
union all select 1,7,15,2
--查询
select EM_ID=EM_ID,
TC_SUM_M1=sum(case when Kind=1 then TC_M else 0 end),
DO_SUM_M1=sum(case when Kind=1 then DO_M else 0 end),
TC_SUM_M2=sum(case when Kind=2 then TC_M else 0 end),
DO_SUM_M2=sum(case when Kind=2 then DO_M else 0 end)
from @表A
group by EM_ID
--结果
EM_ID TC_SUM_M1 DO_SUM_M1 TC_SUM_M2 DO_SUM_M2
----------- ----------- ----------- ----------- -----------
1 5 10 7 15
2 3 10 12 20
3 4 30 2 10

(所影响的行数为 3 行)
phantomMan 2005-09-05
  • 打赏
  • 举报
回复
create table a
(
EM_ID int,
TC_M int,
DO_M int,
Kind int
)

insert into a values(1,5,10,1)
insert into a values(2,3,10,1)
insert into a values(3,2,10,2)
insert into a values(2,12,20,2)
insert into a values(3,4,30,1)
insert into a values(1,7,15,2)

select EM_ID,
(select t2.TC_M from A t2 where kind=1 and t1.EM_ID=t2.EM_ID) as TC_SUM_M1,
(select DO_M from A t2 where kind=2 and t1.EM_ID=t2.EM_ID) as DO_SUM_M2,
(select TC_M from A t2 where kind=1 and t1.EM_ID=t2.EM_ID) as TC_SUM_M1,
(select DO_M from A t2 where kind=2 and t1.EM_ID=t2.EM_ID) as DO_SUM_M2
from A t1
group by EM_ID
SQL2012软件简介 SQL查询器流传着很多软件,但相信此软件会有它的特别之处,本软件是经多名工程师测试。功能以及效率是有见证。本软件体积优势非常轻巧功能强大,1.4M的大小携带方便。如有建议请发邮件到75934092@qq.com,谢谢你的宝贵建议。话不多说,请看以下功能介绍! 特色功能: (一) 线程查询数据,可看查询结果完成的进度。 (二) 语句编辑强大的语法自动填充功能,可快速填充或字段 (三) EXCEL导出后台完成。可选中语句导出EXCEL内容! V1.0.0.138 本版本调整了: 1. 汇总后,头分组统计选择字段显示不正常 2. 汇总后,复制列名时复制不正常 3. 拖动语句编辑时,字体错位的问题 4. TOP查询时,进度不正确 5. 关联查询行数错误的问题 6. 数据库选项的排序问题 7. 临时记录的打开按钮位置 新增功能: 1. 界面大量调整把所有右击出来的菜单都显示在对应的功能位置上,操作上来更新顺手 2. 高级查询的窗口全部显示置前,整理排序窗口 3. 主查询窗口的求和功能和排序功能 4. 高级查询加入,可筛选,可分组统计。可汇总 5. 语句编辑框中直接导出查询结果到EXCEL 一、主功能概述 1.shift+空格 内容自动填充 2.预计总记录数 3.预计前N行记录 4.生成字段以豆号分割 字段1,字段2.... 可自定义换行数量 5.显示的详细信息,字段长度。可直接在查询结果中显示。 6.对查询内容导出EXCEL,高级结果可快速导出。后台处理不会卡程序。在导出大量的数据时可以操作其他操作。软件在导出完成后会检查EXCEL的行数完整性。可以EXCEL信息中查阅。 7.高级结果可拖放分组统计内容 8.对查询结果生成插入语句。可方便夸平台的数据插入 9.查询结果中快速定位查找内容字段位置,可模糊查找 10.可执行存储过程。执行过程中会在对应的GO中报错。可以得知是那行的错误 11.ctrl+1~5 的快捷语句记录。在使用过程中可以按对应的快捷键,在语句编号窗口中插入。临时代码记录10条。可方便用户临时记录编号语句。 12.直接对内容生成IN语句方便查询。 13.快速查询数据库中的信息,快速查询对应的的字段,可直接筛选想要的字段内容。此功能可让使用者快速知道对应的字段类型! 14.可直接对字段列的字段进行操作。插入,修改,删除!! 15.查询结果可以直接显示数据库的二进制图片内容 16.排量更新后台,此功能可以对当你手上有大量后台的时候不需要一个个去打开执行,只需要插入到软件的批量更新窗口中执行。执行成功会OK,编辑后再执行,直到全部OK。Ok过的不需重量执行放心! 17.文件传送。可以利用这软件传送文件。如果两个软件连到同一个SQL服务器上。此两个电脑可以互传文件了! 18.EXCEL导入数据库。可以把对应的EXCEL导入到数据库中。EXCEL头为列名。名定义 19.远程复制,粘贴文件! 20.SQL中实用的语句帮助文档! 二、辅助功能 1.对IP或域名进行端口测试 2.获取当前外网IP地址 3.直接远程连接当前连接IP 4.网整测试当前连接的情况 注:本软件使用次数为10次,因本软件需要大家的建议。功能还在继续完善中,所以免费取得注册码!需要请发邮件或加QQ联系作者。多谢大家的支持! 联系方式:75934092@qq.com 或可直接加QQ:75934092 510567321
SQL查询器流传着很多软件,但相信此软件会有它的特别之处,本软件是经多名工程师测试。功能以及效率是有见证。本软件体积优势非常轻巧功能强大,1.7M的大小携带方便。如有建议请发邮件到75934092@qq.com,谢谢你的宝贵建议。话不多说,请看以下功能介绍! 本软件所有功能完全免费。非常大家的支持!!! 特色功能: (一) 线程查询数据,可看查询结果完成的进度。 (二) 语句编辑强大的语法自动填充功能,可快速填充或字段 (三) EXCEL导出后台完成。可选中语句导出EXCEL内容! (四) 自带远程桌面控制功能 (五) 自定义保存二进制数据内容成文件 (六) 查询结果可直接显示字段类型等信息 本版本调整了: 1. 启动程序更快 2. 加入远程桌面远程控制功能 3. 加入格式化JSON功能 4. 加入查询结果二进制内容导批量导出成文件 5. 查询显示中可显示对应的字段类型及长度等信息 新增功能: 1. 界面大量调整把所有右击出来的菜单都显示在对应的功能位置上,操作上来更新顺手 2. 高级查询的窗口全部显示置前,整理排序窗口 3. 主查询窗口的求和功能和排序功能 4. 高级查询加入,可筛选,可分组统计。可汇总 5. 语句编辑框中直接导出查询结果到EXCEL 一、主功能概述 1.F8,F9 内容自动填充 2.预计总记录数 3.预计前N行记录 4.生成字段以豆号分割 字段1,字段2....可自定义换行数量 5.显示的详细信息,字段长度。可直接在查询结果中显示。 6.对查询内容导出EXCEL,高级结果可快速导出。后台处理不会卡程序。在导出大量的数据时可以操作其他操作。软件在导出完成后会检查EXCEL的行数完整性。可以EXCEL信息中查阅。 7.高级结果可拖放分组统计内容 8.对查询结果生成插入语句。可方便夸平台的数据插入 9.查询结果中快速定位查找内容字段位置,可模糊查找 10.可执行存储过程。执行过程中会在对应的GO中报错。可以得知是那行的错误 11.ctrl+1~5 的快捷语句记录。在使用过程中可以按对应的快捷键,在语句编号窗口中插入。临时代码记录10条。可方便用户临时记录编号语句。 12.直接对内容生成IN语句方便查询。 13.快速查询数据库中的信息,快速查询对应的的字段,可直接筛选想要的字段内容。此功能可让使用者快速知道对应的字段类型! 14.可直接对字段列的字段进行操作。插入,修改,删除!! 15.查询结果可以直接显示数据库的二进制图片内容 16.排量更新后台,此功能可以对当你手上有大量后台的时候不需要一个个去打开执行,只需要插入到软件的批量更新窗口中执行。执行成功会OK,编辑后再执行,直到全部OK。Ok过的不需重量执行放心! 17.文件传送。可以利用这软件传送文件。如果两个软件连到同一个SQL服务器上。此两个电脑可以互传文件了! 18.EXCEL导入数据库。可以把对应的EXCEL导入到数据库中。EXCEL头为列名。名定义 19.远程复制,粘贴文件! 20.SQL中实用的语句帮助文档! 二、辅助功能 1.对IP或域名进行端口测试 2.获取当前外网IP地址 3.直接远程连接当前连接IP 4.网整测试当前连接的情况 5.格式化JSON格式内容 联系方式:75934092@qq.com或可直接加QQ:75934092 510567321
SQL2012软件简介 SQL查询器流传着很多软件,但相信此软件会有它的特别之处,本软件是经多名工程师测试。功能以及效率是有见证。本软件体积优势非常轻巧功能强大,1.7M的大小携带方便。如有建议请发邮件到75934092@qq.com,谢谢你的宝贵建议。话不多说,请看以下功能介绍! 特色功能: (一) 线程查询数据,可看查询结果完成的进度。 (二) 语句编辑强大的语法自动填充功能,可快速填充或字段 (三) EXCEL导出后台完成。可选中语句导出EXCEL内容! (四) 自带远程桌面控制功能 (五) 自定义保存二进制数据内容成文件 (六) 查询结果可直接显示字段类型等信息 V2.0.0.0 本版本调整了: 1. 启动程序更快 2. 加入远程桌面远程控制功能 3. 加入格式化JSON功能 4. 加入查询结果二进制内容导批量导出成文件 5. 查询显示中可显示对应的字段类型及长度等信息 新增功能: 1. 界面大量调整把所有右击出来的菜单都显示在对应的功能位置上,操作上来更新顺手 2. 高级查询的窗口全部显示置前,整理排序窗口 3. 主查询窗口的求和功能和排序功能 4. 高级查询加入,可筛选,可分组统计。可汇总 5. 语句编辑框中直接导出查询结果到EXCEL 一、主功能概述 1.F8,F9 内容自动填充 2.预计总记录数 3.预计前N行记录 4.生成字段以豆号分割 字段1,字段2....可自定义换行数量 5.显示的详细信息,字段长度。可直接在查询结果中显示。 6.对查询内容导出EXCEL,高级结果可快速导出。后台处理不会卡程序。在导出大量的数据时可以操作其他操作。软件在导出完成后会检查EXCEL的行数完整性。可以EXCEL信息中查阅。 7.高级结果可拖放分组统计内容 8.对查询结果生成插入语句。可方便夸平台的数据插入 9.查询结果中快速定位查找内容字段位置,可模糊查找 10.可执行存储过程。执行过程中会在对应的GO中报错。可以得知是那行的错误 11.ctrl+1~5 的快捷语句记录。在使用过程中可以按对应的快捷键,在语句编号窗口中插入。临时代码记录10条。可方便用户临时记录编号语句。 12.直接对内容生成IN语句方便查询。 13.快速查询数据库中的信息,快速查询对应的的字段,可直接筛选想要的字段内容。此功能可让使用者快速知道对应的字段类型! 14.可直接对字段列的字段进行操作。插入,修改,删除!! 15.查询结果可以直接显示数据库的二进制图片内容 16.排量更新后台,此功能可以对当你手上有大量后台的时候不需要一个个去打开执行,只需要插入到软件的批量更新窗口中执行。执行成功会OK,编辑后再执行,直到全部OK。Ok过的不需重量执行放心! 17.文件传送。可以利用这软件传送文件。如果两个软件连到同一个SQL服务器上。此两个电脑可以互传文件了! 18.EXCEL导入数据库。可以把对应的EXCEL导入到数据库中。EXCEL头为列名。名定义 19.远程复制,粘贴文件! 20.SQL中实用的语句帮助文档! 二、辅助功能 1.对IP或域名进行端口测试 2.获取当前外网IP地址 3.直接远程连接当前连接IP 4.网整测试当前连接的情况 5.格式化JSON格式内容 注:本软件使用次数为10次,因本软件需要大家的建议。功能还在继续完善中,所以免费取得注册码!需要请发邮件或加QQ联系作者。多谢大家的支持! 联系方式:75934092@qq.com或可直接加QQ:75934092 510567321

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧