首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这个sql查询应该如何做

2014-01-12 
这个sql查询应该怎么做create table 表( ID varchar(50), 品牌 varchar(50), 车型 varchar(50), 销售人员

这个sql查询应该怎么做
这个sql查询应该如何做

create table 表
(
 ID varchar(50),
 品牌 varchar(50),
 车型 varchar(50),
 销售人员 varchar(50),
 客户名 varchar(50)
)
insert into 表 values('001','轻卡','顺达','小王','甲')
insert into 表 values('002','轻卡','凯运','小李','甲')
insert into 表 values('003','皮卡','域虎','小王','甲')
insert into 表 values('004','轻卡','凯运','小李','乙')
insert into 表 values('005','皮卡','域虎','小王','甲')
insert into 表 values('006','轻卡','顺达','小李','甲')
insert into 表 values('007','皮卡','域虎','小王','丙')
insert into 表 values('008','皮卡','域虎','小李','丁')
我是这样写的:
declare @sql varchar(max)
  select @sql=isnull(@sql+',','')+'sum(Case when 车型='''+车型+''' then 1 Else 0 End) As ['+品牌+'-'+车型+'-销售(数)],Case when  车型='''+车型+''' then count(客户名) Else 0 End as ['+品牌+'-'+车型+'-客户(数)]'
  FROM 表
  GROUP BY 车型,品牌
  ORDER BY 品牌
exec('select 品牌,销售人员,'+@sql+'from 表  group by 品牌,销售人员,车型 order by 品牌,销售人员')
查不出来上面的结果,如果同一个销售员卖出了相同品牌但不同车型的两台车 需要对车型分组,但这样就会出现两条这个销售人的记录
[解决办法]
列名你自己改一下吧,大概思路就这样

--create table 表
--(
-- ID varchar(50),
-- 品牌 varchar(50),
-- 车型 varchar(50),
-- 销售人员 varchar(50),
-- 客户名 varchar(50)
--)
--insert into 表 values('001','轻卡','顺达','小王','甲')
--insert into 表 values('002','轻卡','凯运','小李','甲')
--insert into 表 values('003','皮卡','域虎','小王','甲')
--insert into 表 values('004','轻卡','凯运','小李','乙')
--insert into 表 values('005','皮卡','域虎','小王','甲')
--insert into 表 values('006','轻卡','顺达','小李','甲')
--insert into 表 values('007','皮卡','域虎','小王','丙')
--insert into 表 values('008','皮卡','域虎','小李','丁')
declare @s nvarchar(4000)
set @s=''
Select     @s=@s+','+quotename('a')+'=sum(case when [品牌]='+quotename(品牌,'''')+' and [车型]='+quotename(车型,'''')+' then 1 else 0 end)'
+','+quotename('a')+'=count(case when [品牌]='+quotename(品牌,'''')+' and [车型]='+quotename(车型,'''')+' then 客户名 else null end)'
from 表 group by 品牌,车型
exec('select [品牌],销售人员'+@s+' from 表 group by [品牌],销售人员')
 
 /*
 品牌                                                 销售人员                                               a           a           a           a           a           a
-------------------------------------------------- -------------------------------------------------- ----------- ----------- ----------- ----------- ----------- -----------
皮卡                                                 小李                                                 1           1           0           0           0           0
轻卡                                                 小李                                                 0           0           2           2           1           1


皮卡                                                 小王                                                 3           3           0           0           0           0
轻卡                                                 小王                                                 0           0           0           0           1           1
 */

热点排行