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

疑难有关问题,请问

2012-03-15 
疑难问题,请教目前有表:khxx表,其中字段如下:客户帐号客户名称年龄购买数量10251026张三252010251256王鸣3

疑难问题,请教
目前有表:khxx表,其中字段如下:

客户帐号客户名称年龄购买数量
10251026张三2520
10251256王鸣3650
10251649李名52150
10256524王三6030
10253625李六7852
…………


要求: 年龄:N ; 购买数量:P

  按年龄及购买数量分档次填写下表,如年龄在50岁以上且购买数量在60以上的客户数量是多少?下表如何写代码?

年龄(N) 客户数量1(要求:20<P<=60) 客户数量2(要求:60<P)  

30<N<=50 ____________ _____________
   
50<N _____________ ______________

[解决办法]

SQL code
declare @khxx表 table (客户帐号 int,客户名称 varchar(4),年龄 int,购买数量 int)insert into @khxx表select 10251026,'张三',25,20 union allselect 10251256,'王鸣',36,50 union allselect 10251649,'李名',52,150 union allselect 10256524,'王三',60,30 union allselect 10253625,'李六',78,52SELECT  '30<N<=50' AS [年龄(N)] ,        SUM(CASE WHEN 年龄 BETWEEN 31 AND 50                      AND 购买数量 BETWEEN 21 AND 60 THEN 1                 ELSE 0            END) AS [客户数量1(要求:20<P<=60)] ,        SUM(CASE WHEN 年龄 BETWEEN 31 AND 50                      AND 购买数量 > 60 THEN 1                 ELSE 0            END) AS [客户数量2(要求:60<P)]FROM    @khxx表UNION ALLSELECT  '50<N' ,        SUM(CASE WHEN 年龄 > 50                      AND 购买数量 BETWEEN 21 AND 60 THEN 1                 ELSE 0            END) ,        SUM(CASE WHEN 年龄 > 50                      AND 购买数量 > 60 THEN 1                 ELSE 0            END)FROM    @khxx表/*年龄(N)    客户数量1(要求:20<P<=60) 客户数量2(要求:60<P)-------- ------------------ --------------30<N<=50 1                  050<N     2                  1*/
[解决办法]
/*
客户帐号 客户名称 年龄 购买数量
10251026 张三 25 20
10251256 王鸣 36 50
10251649 李名 52 150
10256524 王三 60 30
10253625 李六 78 52
要求: 年龄:N ; 购买数量:P
按年龄及购买数量分档次填写下表,
如年龄在50岁以上且购买数量在60以上的客户数量是多少?
下表如何写代码?
年龄(N) 客户数量1(要求:20<P<=60) 客户数量2(要求:60<P) 
*/
go
if OBJECT_ID('tbl') is not null
drop table tbl
go
create table tbl(
cusid char(8),
cusname varchar(20),
cusage int,
cusamount int
)
go
insert into tbl
select 10251026,'张三',25,20 union all
select 10251256,'王鸣',36,50 union all
select 10251649,'李名',52,150 union all
select 10256524,'王三',60,30 union all
select 10253625,'李六',78,52

select '30<N<=50',
SUM(case when cusage between 31 and 50
and cusamount between 21 and 60 
then 1 else 0 end) as [客户数量1(要求:20<P<=60)] ,
SUM(case when cusage between 31 and 50 and cusamount > 60 
then 1 else 0 end) as [客户数量2(要求:60<P)]
from tbl
union all
select '50<N' ,
SUM(case when cusage > 50
and cusamount between 21 and 60 then 1 else 0 end),
SUM(case when cusage > 50 and cusamount > 60 then 1 else 0 end)
from tbl

结果:
(无列名)客户数量1(要求:20<P<=60)客户数量2(要求:60<P)
30<N<=5010
50<N21

热点排行