新手求教!一提关于sql的题目

asd61789 2017-06-30 04:19:02
分组之后怎么查询不同的数量呢
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd61789 2017-06-30
  • 打赏
  • 举报
回复
引用 4楼zhouyuehai1978 的回复:
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([id] int,[address] nvarchar(22),[level] nvarchar(23))
Insert #A
select 2,N'北京',N'I' union all
select 3,N'上海',N'II' union all
select 5,N'广东',N'III' union all
select 6,N'北京',N'I' union all
select 7,N'上海',N'III'
Go
--测试数据结束
SELECT ADDRESS,
ISNULL(I, 0) AS I,
ISNULL(II, 0) AS II,
ISNULL(III, 0) AS III
FROM (
SELECT ADDRESS,
LEVEL,
1 AS c
FROM #A AS a
) AS a1 PIVOT(SUM(c) FOR LEVEL IN (I, II, III)) AS p

可以了,谢谢^ ^
asd61789 2017-06-30
  • 打赏
  • 举报
回复
引用 3楼二月十六 的回复:
2#有点问题,用这个
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([id] int,[address] nvarchar(22),[level] nvarchar(23))
Insert #A
select 2,N'北京',N'I' union all
select 3,N'上海',N'II' union all
select 5,N'广东',N'III' union all
select 6,N'北京',N'I' union all
select 7,N'上海',N'III'
Go
--测试数据结束
declare @sql varchar(8000)
set @sql='select [address] '
select @sql=@sql+' , sum(case [level] when '''+ [level] +''' then 1 else 0 end) [水质'+ [level] +'总数]'
from (SELECT DISTINCT [level] FROM #A)a
set @sql=@sql+' from #A group by [address]'
EXEC(@sql)

谢谢大佬
zhouyuehai1978 2017-06-30
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([id] int,[address] nvarchar(22),[level] nvarchar(23))
Insert #A
select 2,N'北京',N'I' union all
select 3,N'上海',N'II' union all
select 5,N'广东',N'III' union all
select 6,N'北京',N'I' union all
select 7,N'上海',N'III'
Go
--测试数据结束
SELECT ADDRESS,
ISNULL(I, 0) AS I,
ISNULL(II, 0) AS II,
ISNULL(III, 0) AS III
FROM (
SELECT ADDRESS,
LEVEL,
1 AS c
FROM #A AS a
) AS a1 PIVOT(SUM(c) FOR LEVEL IN (I, II, III)) AS p

二月十六 2017-06-30
  • 打赏
  • 举报
回复
2#有点问题,用这个
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([id] int,[address] nvarchar(22),[level] nvarchar(23))
Insert #A
select 2,N'北京',N'I' union all
select 3,N'上海',N'II' union all
select 5,N'广东',N'III' union all
select 6,N'北京',N'I' union all
select 7,N'上海',N'III'
Go
--测试数据结束
declare @sql varchar(8000)
set @sql='select [address] '
select @sql=@sql+' , sum(case [level] when '''+ [level] +''' then 1 else 0 end) [水质'+ [level] +'总数]'
from (SELECT DISTINCT [level] FROM #A)a
set @sql=@sql+' from #A group by [address]'
EXEC(@sql)


二月十六 2017-06-30
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([id] int,[address] nvarchar(22),[level] nvarchar(23))
Insert #A
select 2,N'北京',N'I' union all
select 3,N'上海',N'II' union all
select 5,N'广东',N'III' union all
select 6,N'北京',N'I' union all
select 7,N'上海',N'III'
Go
--测试数据结束
declare @sql varchar(8000)
set @sql='select [address] '
select @sql=@sql+' , sum(case [level] when '''+ [level] +''' then 1 else 0 end) [水质'+ [level] +'总数]'
from #A
set @sql=@sql+' from #A group by [address]'
EXEC(@sql)



asd61789 2017-06-30
  • 打赏
  • 举报
回复
求各位大神解答!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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