Wednesday, February 29, 2012

Cool things cross apply does


select * from
(
select 1 as customer_id, 'herby' as name
union select 2 as customer_id, 'george' as name
union select 3 as customer_id, 'ben' as name
) a

cross apply
(

select customer_id, sale,date,
sum(sale) over(partition by customer_id,month(date)) total_of_cust_month,
sum(sale) over(partition by month(date)) total_of_month
from
(
select 1 as customer_id, 34.67 as sale, '1/1/2011' as date
union select 1 as customer_id, 3464.67 as sale, '2/1/2011' as date
union select 1 as customer_id, 364.67 as sale, '2/5/2011' as date
union select 1 as customer_id, 3374.67 as sale, '3/1/2011' as date
union select 2 as customer_id, 3448.67 as sale, '1/1/2011' as date
union select 2 as customer_id, 3324.67 as sale, '2/1/2011' as date
union select 2 as customer_id, 4.67 as sale, '2/4/2011' as date
union select 2 as customer_id, 3443.67 as sale, '3/1/2011' as date
union select 3 as customer_id, 3344.67 as sale, '1/1/2011' as date
union select 3 as customer_id, 3544.67 as sale, '2/1/2011' as date
union select 3 as customer_id, 3.67 as sale, '2/3/2011' as date
union select 3 as customer_id, 6334.67 as sale, '3/1/2011' as date) as main
where main.customer_id = a.customer_id
) b

cool things
  1. we can get multiple rows - subqueries cant
  2. we can get multiple columns - subqueries cant

No comments:

Post a Comment