这是a previous question的第二部分,我问过并已经得到答案。
在那里,我每年都希望每个月都有新客户。现在我想通过电子邮件地址实际看到一个新的列表(但是我真的不理解回答这个问题的代码,所以我仍然对自己这样做而感到迷茫,更重要的是,确认它是正确的)。
理想情况下,结果只是一列电子邮件地址。例如:
2011年6月的新客户
Month
email1@abc.com
email2@def.net
email3@ghi.edu
如果它不是太复杂,那么按月将它们分组也是有效的。含义...
2011年的新客户
Jan Feb Mar
email1 email4 email7
email2 email5 email8
email3 email6 email9
......等等。我可能几乎更喜欢简单的一次只显示一个月,但为了能够尝试和理解,哈哈。
标准非常简单:
我的表名为 tblOrders 。 我的电子邮件名为电子邮件。 日期为 OrderDate 。
请注意,更简单的代码对我来说更容易理解,除非在这里不可能保持简单。这个查询对我来说似乎很简单......我得到了逻辑,但不是如何实际做到这一点! :(
如果您需要任何其他信息,请询问!谢谢!
编辑:如果有帮助的话,我之前会得到这个虚假代码,但它超出了我的范围。 /哑
SELECT <customer info>
FROM <customer table>
WHERE (SELECT COUNT(<order info>)
FROM <order table>
WHERE <customer info> = <current customer>
AND <date> < <target date>) = 0
AND (SELECT COUNT(<order info>
FROM <order table>
WHERE <customer info> = <current customer>
AND <date> > <target date>) > 0
答案 0 :(得分:1)
SELECT MIN(OrderDate) AS MOD FROM dbo.tblOrders;
为您提供表格中最精美的OrderDate。
SELECT Email, MIN(OrderDate) AS MOD
FROM dbo.tblOrders
GROUP BY Email;
为您提供每个唯一电子邮件地址的第一个订单日期。
SELECT Email, MIN(OrderDate) AS MOD
FROM dbo.tblOrders
GROUP BY Email
HAVING MIN(OrderDate) >= '20110601' AND MIN(OrderDate) < '20110701';
为您提供所需客户的电子邮件以及他们的第一个OrderDate。
要达到第二个要求,您只需删除<
子句的HAVING
部分:
SELECT Email, MIN(OrderDate) AS MOD
FROM dbo.tblOrders
GROUP BY Email
HAVING MIN(OrderDate) >= '20110601';
这将为您提供在2011-06-01之前或之后订购的所有客户,但不是之前订购。
答案 1 :(得分:0)
以下查询为您提供每位客户的第一个订单日期:
select email, min(orderdate) as FirstOrderDate
from orders o
group by email;
按月计算新客户数量:
select year(FirstOrderDate) as yr, month(FirstOrderDate) as mon, count(*)
from (select email, min(orderdate) as FirstOrderDate
from orders o
group by email
) oc
group by year(FirstOrderDate), month(FirstOrderDate);
为了获得特定月份的客户:
select email
from (select email, min(orderdate) as FirstOrderDate
from orders o
group by email
) oc
where FirstOrderDate >= '2013-01-01' and
FirstOrderDate < '2013-02-01'
将它们并入列表(多列)可能不值得付出努力。
答案 2 :(得分:0)
这里..目前的几个月
SELECT COUNT(ID) as permnt
FROM tbl_CustomerDetails
where datepart(month,CreatedDate)= datepart(month,GETDATE())
答案 3 :(得分:0)
这里是当月工作良好的情况。.Sql
选择COUNT(ID)作为新的月份
来自dbo.tblOrders
按ID分组
具有MIN(OrderDate)> = DATE_FORMAT(Sysdate(),'%Y-%m-01')和MIN(OrderDate)