2

テーブル " Customers" があります。

列名に「CreatedDate」があり、お客様の入社日であることを意味します。

以下のように、現在の日付からceateddateまでの1〜5年、6〜10年、11〜15年の顧客数を計算したい

Years         No of Customer
0-5           200
6-10          500
11-15         100

詳しくは、顧客の作成日が「2010 年 5 月 5 日」の場合、現在の日付から 0 ~ 5 年の範囲である必要があります。

また、createddate が「2006 年 5 月 5 日」の場合、現在の日付から 6 ~ 10 年の範囲である必要があります。

4

3 に答える 3

3

このようなもの:

with cte as (
  select ((datediff(yy, CreatedDate, getdate()) - 1) / 5) * 5 + 1 as d
  from Customers
)
select
  cast(d as nvarchar(max)) + '-' + cast(d + 4 as nvarchar(max)),
  count(*)
from cte
group by d

sql fiddle demo

于 2013-10-21T06:17:15.600 に答える
0

次のクエリを使用します。

With s as(
    SELECT custid,CASE WHEN FLOOR(DATEDIFF(DAY,CREATEDATE,GETDATE())/365)>=1 
                                AND
                                FLOOR(DATEDIFF(DAY,CREATEDATE,GETDATE())/365)<=5 THEN '1-5'
                            WHEN 
                                FLOOR(DATEDIFF(DAY,CREATEDATE,GETDATE())/365)>=6 
                                AND
                                FLOOR(DATEDIFF(DAY,CREATEDATE,GETDATE())/365)<=10 THEN '6-10' END as 'd'
        FROM TABLE)
select count(custid),d
from s 
group by d
于 2013-10-21T06:18:29.060 に答える