• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

■■■两个表连接■■■

fanqingfeng 2005-05-06 02:02:35
客户表 C:

客户ID 注册时间
----§----------
1 2005-1-1 12:35:12
2 2005-3-2 14:25:22
。。。


订单表 O:
订单ID 客户ID 订单时间
----§---§-------
1 1 2005-1-3 20:12:01
2 1 2005-2-10 22:10:10
3 2 2005-3-20 12:12:00
。。。

求每月订单的客户数(年报表)
时间(年月)M 下订单总客户数A 当月新注册,并下订单客户数B
-------§--------§---------------
2005-1 1 1
2005-2 1 0
2005-3 1 1
...

求SQL语句 谢谢
...全文
63 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fanqingfeng 2005-05-06
谢谢
回复
xiaomeixiang 2005-05-06
如果当月该客户下了几次单,是不是只算一个?
CREATE TABLE C(客户ID INT, 注册时间 DATETIME)
INSERT INTO C VALUES(1 , '2005-1-1 12:35:12')
INSERT INTO C VALUES(2 , '2005-3-2 14:25:22')

CREATE TABLE O(订单ID INT, 客户ID INT, 订单时间 DATETIME)
INSERT INTO O VALUES(1 , 1, '2005-1-3 20:12:01')
INSERT INTO O VALUES(1 , 1, '2005-1-4 20:12:01')
INSERT INTO O VALUES(2 , 1, '2005-2-10 22:10:10')
INSERT INTO O VALUES(3 , 2, '2005-3-20 12:12:00')

select 月,count(*) 下订单总客户数A
,SUM(CASE WHEN 月=convert(varchar(7),注册时间,120) THEN 1 ELSE 0 END) 当月新注册并下订单客户数B
from c,(select DISTINCT convert(varchar(7),订单时间,120) as 月,客户ID FROM O ) d
where c.客户ID=d.客户ID group by 月

DROP TABLE C,O
回复
xiaomeixiang 2005-05-06
CREATE TABLE C(客户ID INT, 注册时间 DATETIME)
INSERT INTO C VALUES(1 , '2005-1-1 12:35:12')
INSERT INTO C VALUES(2 , '2005-3-2 14:25:22')

CREATE TABLE O(订单ID INT, 客户ID INT, 订单时间 DATETIME)
INSERT INTO O VALUES(1 , 1, '2005-1-3 20:12:01')
INSERT INTO O VALUES(2 , 1, '2005-2-10 22:10:10')
INSERT INTO O VALUES(3 , 2, '2005-3-20 12:12:00')

select convert(varchar(7),订单时间,120) as 月,count(distinct O.客户ID) 下订单总客户数A
,SUM(CASE WHEN convert(varchar(7),订单时间,120)=convert(varchar(7),注册时间,120) THEN 1 ELSE 0 END) 当月新注册并下订单客户数B
from O,C WHERE O.客户ID=C.客户ID group by convert(varchar(7),订单时间,120)

DROP TABLE C,O
回复
Well 2005-05-06
是不是根據注冊的時間來確定的
回复
hipop 2005-05-06
是convert(varchar(7),订单时间,111) 还是convert(varchar(7),订单时间,120) ??
回复
Well 2005-05-06
select convert(char(7),订单时间,120) as 年月 ,
sum(订单ID) as 订单的客户数 from 客户表 A, 订单表 B
where A.客户ID =B.客户ID
group by convert(char(7),订单时间,120)
回复
Well 2005-05-06
select convert(char(7),订单时间,120) as 年月 ,
sum(订单ID) 订单的客户数 as from 客户表 A, 订单表 B
where A.客户ID =B.客户ID
group by convert(char(7),订单时间,120)

有一點不太理解樓主的意思
下订单总客户数A 当月新注册,并下订单客户数B
這兩是用什麼條件來確定的。
在你的數據庫裡。
可以說的詳細一點嗎
最好給出實例來
回复
xiaomeixiang 2005-05-06

select convert(varchar(7),订单时间,111) as 月,count(distinct O.客户ID) 下订单总客户数A
,SUM(CASE WHEN convert(varchar(7),订单时间,111)=convert(varchar(7),注册时间,111) THEN 1 ELSE 0 END) 当月新注册并下订单客户数B
from O,C WHERE O.客户ID=C.客户ID group by 月
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2005-05-06 02:02
社区公告
暂无公告