1

これは、私が尋ねた以前の質問のパート 2 のようなもので、すでに回答を得ています。

そこでは、月ごと、年ごとのすべての新規顧客の数が必要でした。今、私は実際に新しい人のリストをメールアドレスで見たいと思っています(しかし、その質問に答えたコードをよく理解していないので、自分でそれを行うこと、そしてさらに重要なことに、それが正しいことを確認することについてまだ迷っています. )。

結果は、理想的には電子メール アドレスの 1 列だけになります。例えば:

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

...等々。試して理解できるようにするために、一度に 1 か月だけ表示するシンプルなものを好むかもしれません (笑)。

基準は非常に単純です。

  • 2011 年 6 月に初めて注文したすべての顧客のリスト。
  • 最初の質問から、「新規顧客」とは、(a) 2011 年 6 月 1 日より前に注文したことがない人、および (b) 2011年 6 月 1 日以降に少なくとも 1 回注文した人として定義されることを知っています。

私のテーブルはtblOrdersと呼ばれます。私のメールはEmailと呼ばれます。日付は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
4

4 に答える 4

2

次のクエリは、各顧客の最初の注文日を取得します。

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'

それらを並列リスト (複数の列) で取得することは、おそらく努力する価値がありません。

于 2013-06-24T21:29:11.223 に答える
0

ここに..現在の月について

 SELECT COUNT(ID) as permnt
    FROM tbl_CustomerDetails 
    where datepart(month,CreatedDate)= datepart(month,GETDATE())
于 2015-10-14T10:31:32.620 に答える