[COLOR=blue]declare[/color] @n [COLOR=blue]table[/color] (
SalesDate [COLOR=#FF00FF]datetime[/color]
, Customer [COLOR=blue]int[/color]
, OrderNumber [COLOR=blue]int[/color]
, NewCustomer [COLOR=blue]bit[/color]
)
[COLOR=blue]insert[/color] @n
[COLOR=blue]select[/color] [COLOR=#FF00FF]getdate[/color](), 15, 273, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]getdate[/color]() - 15, 15, 202, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]dateadd[/color]([COLOR=#FF00FF]year[/color], -5, [COLOR=#FF00FF]getdate[/color]()), 92, 5, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]getdate[/color](), 92, 5, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]dateadd[/color]([COLOR=#FF00FF]year[/color], -10, [COLOR=#FF00FF]getdate[/color]()), 12, 7, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]dateadd[/color]([COLOR=#FF00FF]year[/color], -7, [COLOR=#FF00FF]getdate[/color]()), 12, 9, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]dateadd[/color]([COLOR=#FF00FF]year[/color], -1, [COLOR=#FF00FF]getdate[/color]()), 12, 13, 0
union all [COLOR=blue]select[/color] [COLOR=#FF00FF]getdate[/color](), 12, 15, 0
[COLOR=blue]update[/color] a
[COLOR=blue]set[/color] a.NewCustomer = 1
[COLOR=blue]from[/color] @n a
[COLOR=blue]inner[/color] [COLOR=blue]join[/color] (
[COLOR=green]--we want to update rows with min(SalesDate)
[/color] [COLOR=blue]select[/color] customer, [COLOR=#FF00FF]min[/color](SalesDate) msd
[COLOR=blue]from[/color] @n
[COLOR=blue]group[/color] [COLOR=blue]by[/color] customer
[COLOR=green]--also rows with no Sales for 4 years
[/color] union all
[COLOR=blue]select[/color] x.Customer, x.SalesDate
[COLOR=blue]from[/color] @n x
[COLOR=blue]inner[/color] [COLOR=blue]join[/color] @n z
[COLOR=blue]on[/color] x.Customer = z.Customer and x.SalesDate > z.SalesDate
and [COLOR=#FF00FF]datediff[/color]([COLOR=#FF00FF]year[/color], z.SalesDate, x.SalesDate) >=4
[COLOR=blue]where[/color] z.SalesDate >= ([COLOR=blue]select[/color] [COLOR=#FF00FF]max[/color](SalesDate) [COLOR=blue]from[/color] @n
[COLOR=blue]where[/color] Customer = x.Customer
and SalesDate < x.SalesDate)
) b
[COLOR=blue]on[/color] a.customer = b.customer
and a.SalesDate = b.msd
[COLOR=blue]select[/color] * [COLOR=blue]from[/color] @n