sql - Scope of derived tables -


i have complex sql query, we'll need return number of columns, , each represents different row table. derived tables need filtered value, bring ones account. following works great:

select currentbalance.value,        currentbalance.customer,        debt30balance.value    expr1,        debt30balance.customer expr2,        debt60balance.value    expr3,        debt60balance.customer expr4,        debt90balance.value    expr5,        debt90balance.customer expr6,        wipcurrent.value       expr7,        wipcurrent.customer    expr8,        wip30days.value        expr9,        wip30days.customer     expr10,        wip60days.value        expr11,        wip60days.customer     expr12,        wip90days.value        expr13,        wip90days.customer     expr14   (select top (1) value,                        customer           debtbreakdown          ( customer = @customerid )                , ( type = 0 )         order  timestamp desc) currentbalance        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_7                     ( customer = @customerid )                           , ( type = 1 )                    order  timestamp desc) debt30balance          on currentbalance.customer = debt30balance.customer        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_6                     ( customer = @customerid )                           , ( type = 2 )                    order  timestamp desc) debt60balance          on debt30balance.customer = debt60balance.customer        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_5                     ( customer = @customerid )                           , ( type = 3 )                    order  timestamp desc) debt90balance          on debt60balance.customer = debt90balance.customer        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_4                     ( customer = @customerid )                           , ( type = 4 )                    order  timestamp desc) wipcurrent          on debt90balance.customer = wipcurrent.customer        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_3                     ( customer = @customerid )                           , ( type = 5 )                    order  timestamp desc) wip30days          on wipcurrent.customer = wip30days.customer        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_2                     ( customer = @customerid )                           , ( type = 6 )                    order  timestamp desc) wip60days          on wip30days.customer = wip60days.customer        inner join (select top (1) value,                                   customer                      debtbreakdown debtbreakdown_1                     ( customer = @customerid )                           , ( type = 7 )                    order  timestamp desc) wip90days          on wip60days.customer = wip90days.customer   

but, need able filter on other given parameter. basically, want select customer record, given parameter such name of customer, select id use derived tables. i've tried join's derived tables not in scope of joins.

any ideas?

if on @ least sql server 2005 (as seems bracketed top expression) can use common table expressions instead of derived tables.

/*any previous statement must terminated semi colon*/ currentbalance      (select top (1) value,                         customer            debtbreakdown           ( customer = @customerid )                 , ( type = 0 )          order  timestamp desc), /*comma delimit cte definitions*/      debt30balance      (select top (1) value,                         customer            debtbreakdown debtbreakdown_7           ( customer = @customerid )                 , ( type = 1 )          order  timestamp desc)         /* etc etc */ 

you can reference ctes multiple times in same query.


Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -