关于交叉表的生存的问题

「已注销」 2005-09-06 01:19:43
以下是数据库一个数据视图里的字段
投诉记录号 接警类型 投诉类型名称 投诉人 性别 反馈电话 优先级类型 城区名称 路名 投诉内容 投诉来电 单位名称 转警人 接警人 记录时间
想生成如下交叉表,其中环保投诉,工商投诉,公安投诉 是投诉接警类型字段里面的值!武昌区,江岸区,江汉区是城区名称字段的值 各为老大帮帮忙啊?
江岸区,江汉区,武昌区 ......
环保投诉 00 12 13
工商投诉 25 30 45
公安投诉 20 25 5
.
.
.
.
.
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangwuya 2006-01-20
  • 打赏
  • 举报
回复
谢谢你, jinjazz(近身剪(充电中...))!
jinjazz 2005-09-06
  • 打赏
  • 举报
回复
拼一段动态的sql语句然后执行,主要就是用case when
「已注销」 2005-09-06
  • 打赏
  • 举报
回复
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 接警类型'
SELECT @SQL= @SQL+ ',max(CASE WHEN 城区名称 = ''' + 城区名称 + ''' THEN 投诉记录号 END) [' + 城区名称 + '电量] '
FROM (SELECT DISTINCT 城区名称 FROM 表) A
SET @SQL=@SQL+ ' FROM 表 GROUP BY 接警类型'
EXEC (@SQL)
这个能解释一下吗?
jinjazz 2005-09-06
  • 打赏
  • 举报
回复
--建立测试环境

...
--删除测试环境

这几个字看不懂么?
「已注销」 2005-09-06
  • 打赏
  • 举报
回复
还要建表干什么?我就是想通过这个视图得到那个交叉表并在dataGrid上显示出来
jinjazz 2005-09-06
  • 打赏
  • 举报
回复
--建立测试环境
Create Table 表(投诉记录号 varchar(10),接警类型 varchar(10),城区名称 varchar(10))
--插入数据
insert into 表
select '00','环保投诉','江岸区' union
select '12','环保投诉','江汉区' union
select '13','环保投诉','武昌区' union
select '25','工商投诉','江岸区' union
select '30','工商投诉','江汉区' union
select '45','工商投诉','武昌区' union
select '20','公安投诉','江岸区' union
select '25','公安投诉','江汉区' union
select '5','公安投诉','武昌区'

--select * from 表
--测试语句
--动态查询
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 接警类型'
SELECT @SQL= @SQL+ ',max(CASE WHEN 城区名称 = ''' + 城区名称 + ''' THEN 投诉记录号 END) [' + 城区名称 + '电量] '
FROM (SELECT DISTINCT 城区名称 FROM 表) A
SET @SQL=@SQL+ ' FROM 表 GROUP BY 接警类型'
EXEC (@SQL)


--删除测试环境
Drop Table 表

/*--测试结果

接警类型 江岸区电量 江汉区电量 武昌区电量
---------- ---------- ---------- ----------
工商投诉 25 30 45
公安投诉 20 25 5
环保投诉 00 12 13
--*/
Mirricle 2005-09-06
  • 打赏
  • 举报
回复
decode or case

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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