sql重复数据问题
页面:
数据库:
数据库id自增,customername可以重名,customer,mobile 两个放在一起是唯一的。
现在想实现同一个顾客只显示一次,其余的购买信息通过点击后面的链接打开新窗口显示。
Sql="Select A.*,B.Flag From Customer A,(Select ID=Max(ID),Flag=Count(*) From Customer Where 1=1"
下面是asp语句,如果选则了时间进行汇总查询,sql语句会相应的在where 1=1 后增加条件
If Request("StartTime")<>"" Then
Sql=Sql&" And Convert(DateTime,VisitTime)>=Convert(DateTime,'"&Request("StartTime")&"')"
End If
最后合成完整的sql语句进行查询
Sql=Sql& " Group By CustomerName,Mobile) B Where A.ID=B.ID Order By A.ID Desc"
当不输入任何条件的时候 sql 语句为:
Select A.*,B.Flag From Customer A,(Select ID=Max(ID),Flag=Count(*) From Customer where 1=1 Group By CustomerName,Mobile) B Where A.ID=B.ID Order By A.ID Desc
能实现要求。
但是如果加入了购买时间(VisitTime)进行查询 sql语句变为
Select A.*,B.Flag From Customer A,(Select ID=Max(ID),Flag=Count(*) From Customer where 1=1 And Convert(DateTime,VisitTime)>=Convert(DateTime,Request("StartTime") Group By CustomerName,Mobile) B Where A.ID=B.ID Order By A.ID Desc
Request("StartTime")是所选择时间的值,
比如某客户 2014.1.1 2014.1.2购买过2次商品,不加时间条件,Flag=Count(*)=2 用asp 判断 flag>1 显示详细信息链接 正常。
但是加入了时间限制 2014.1.1 这时候进行查询 Flag=Count(*)=1 flag不大于1 链接就不能正常显示出来了。
有没有sql语句 只要客户有2次及以上的购买记录 就加一个临时字段 里面放购买的次数 用于 asp来判断。
请教各位高人了。
[解决办法]
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2014-01-23 11:00:10
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
--Dec 28 2012 20:23:12
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([id] int,[name] varchar(4),[mobile] int,[Productname] varchar(5),[visittime] datetime,[ctrlname] varchar(7))
insert [huang]
select 1,'张三',1111111,'商品1','2014.1.1','销售人1' union all
select 2,'李四',2222222,'商品2','2014.1.2','销售人2' union all
select 3,'王五',3333333,'商品3','2014.1.3','销售人3' union all
select 4,'张三',1111111,'商品4','2014.1.3','销售人1' union all
select 5,'张三',1111111,'商品2','2014.1.3','销售人1' union all
select 6,'张三',7777777,'商品3','2014.1.3','销售人2'
--------------开始查询--------------------------
SELECT * ,(SELECT COUNT(1) FROM huang b WHERE a.NAME=b.NAME AND a.mobile=b.mobile )总购买次数
FROM huang a WHERE EXISTS (SELECT 1 FROM (
select MAX(id)id,name,mobile
from [huang] a where 1=1 AND [visittime]='2014.1.3' GROUP BY name,mobile) b WHERE a.id=b.id AND a.name=b.name AND a.mobile=b.mobile)
----------------结果----------------------------
/*
id name mobile Productname visittime ctrlname 总购买次数
----------- ---- ----------- ----------- ----------------------- -------- -----------
3 王五 3333333 商品3 2014-01-03 00:00:00.000 销售人3 1
5 张三 1111111 商品2 2014-01-03 00:00:00.000 销售人1 3
6 张三 7777777 商品3 2014-01-03 00:00:00.000 销售人2 1
*/