1,建自定义函数
Create function getstr(@id Nchar(100))
returns Nvarchar(4000)
as
begin
declare @str Nvarchar(4000),@分隔符 Nvarchar(10)
set @分隔符=N','
set @str=N''
select @str=@str+rtrim(Col)+@分隔符 from 表名
--------------------------------^^^^要相加的字段名
where 相加条件字段=@id
set @str=left(@str,len(@str)-1)落 ---却除最后一个分隔符
return @str
end
GO2,调用
select 条件字段,dbo.getstr(条件字段) from 表名 group by 条件字段
Create function getstr(@id Nchar(100))
returns Nvarchar(4000)
as
begin
declare @str Nvarchar(4000),@分隔符 Nvarchar(10)
set @分隔符=N','
set @str=N''
select @str=@str+rtrim(Col)+@分隔符 from 表名
--------------------------------^^^^要相加的字段名
where 相加条件字段=@id
set @str=left(@str,len(@str)-1)落 ---却除最后一个分隔符
return @str
end
GO2,调用
select 条件字段,dbo.getstr(条件字段) from 表名 group by 条件字段
解决方案 »
- 安装SqlServerExpress失败
- 批量执行DBCC INDEXDEFRAG,老出现错误提示:你提供的参数数目不正确呢? 先感谢了!
- 闷啦,还是同样的问题
- 急!sql和dat文件如何导入至SQLSERVER数据库
- 用Reporting Services做复杂的报表怎么解决??
- 如何恢复sqlsqlserver 百分求救
- [抛砖引玉]换个思路解决SQL经典问题(二):时间区间按年月统计
- 关于基表变化视图刷新的问题
- 处于不同服务器上的数据库,必须保持同时修改数据库,共同完成,有什么方法?
- 在winXP专业版上为什么装不上SQL Server2000的服务端
- 如何把表中重复的数据删除(表没有主键)?
- 大力,邹建,马可等高手快来帮忙
我用的是 sql7.0 用一个复杂的sql 能行吗?
SELECT distinct * FROM A
(1)*****************************************************************
select '长德' as '地区',
count(distinct mt_id) as '有效卡数',
sum(mt_consume_num) as '次数',
sum(mt_consume_num)/count(distinct mt_id) as '频率',
sum(mt_consume_num)/30 as '平均来客次数',
sum(mt_consume_amt)/sum(mt_consume_num) as '平均客单价',
sum(mt_consume_amt) as '总金额'
from mem_personal,mem_transaction
where mp_id=mt_id and mt_month='2003/10' and
mt_id<>'03999999' and mt_id<>'03588888' and
mem_personal.mp_address like '%长德%'
该查询执行后结果为:
地区 有效卡数 次数 频率 平均来客次数 平均客单价 总金额
长德 555 2590 4.66 86.33 59.31 153631.80
(2)**********************************************************************
select '长德',count(mp_id) from mem_personal where mp_address like '%长德%'
该查询执行的结果为:
地区 总卡数
长德 649(3)**************************************************************************
而我想要这样的效果
地区 有效卡数 次数 频率 平均来客次数 平均客单价 总金额 总卡数
长德 555 2590 4.66 86.33 59.31 153631.80 649
应该如何实现啊??????????????????????
第二个查询语句改为
select *,count(mp_id) 总卡数 from mem_personal where mp_address like '%长德%'
from #t a join
( select id,min(tid)
from #t
group by id
) b on a.tid=b.tid
godrop table #t
select * from 表 a where 字段2=(select max(字段2 from 表 where 字段1=a.字段1)
order by a
--测试数据
create table #t(a int,b varchar(10))
insert into #t
select 3,'** **'
union all select 4,'** **'
union all select 5,'** **'
union all select 5,'** **'
union all select 5,'** **'
union all select 5,'** **'
union all select 6,'** **'
union all select 7,'** **'
union all select 7,'** **'--查询
select * from #t a where b=(select max(b) from #t where a=a.a)
order by a
go
--删除测试
drop table #t/*--测试结果
a b
----------- ----------
3 ** **
4 ** **
5 ** **
6 ** **
7 ** **(所影响的行数为 5 行)
--*/
select id=identity(int,1,1),* into #t from 表
select 字段1,字段2 from #t a where id=(select max(id) from #t where 字段1=a.字段1)
drop table #t