■■■两个表连接■■■

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语句 谢谢
...全文
94 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 月

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧