Skip to main content
Open

Format queries in debugger

Related products:Windows GUI
  • January 25, 2021
  • 1 reply
  • 15 views
John Sangers
Ricky
  • John Sangers
    John Sangers
  • Ricky
    Ricky

Robert Jan de Nie
Thinkwise blogger

Sometimes select-queries become very hard to read, especially when you use display expressions. A lot of nesting takes place.

In order to make them readable, I use the ApexSQL formatting plugin, but I think it would help a lot of people if the GUI did the propper formatting for you. Especially when you need to debug or tune something.

This is an example from a current project:

select top 1000 t1.[sales_order_id], t1.[administration_id], t1.[customer_id], t1.[sales_order_number], t1.[sales_order_type], t1.[based_on_complaint_id], t1.[payment_term_id], t1.[delivery_term_id], t1.[customer_reference], t1.[delivery_address_id], t1.[type_delivery_date], t1.[delivery_date], t1.[delivery_year], t1.[delivery_month], t1.[delivery_week], rtrim(t1.[currency_code]) as [currency_code], t1.[logistics_remark], t1.[invoice_organisation_id], t1.[invoice_recipient_person_id], t1.[avg_invoice_recipient_person_id], t1.[invoice_address_id], t1.[regular_confirmation_or_pro_forma], t1.[certificate_recipient_person_id], t1.[avg_certificate_recipient_person_id], t1.[exchange_rate], t1.[quotation_or_order], t1.[valid_until], t1.[delivery_time_after_agreement], t1.[delivery_time_sort], t1.[organisation_remark], t1.[agent_id], t1.[organisation_agent_fee], t1.[commission_calculation], t1.[commission_amount], t1.[percentage_amount], t1.[customer_contact_id], t1.[avg_customer_contact_id], t1.[manual_calculation_agent_fee], t1.[current_credit_limit], t1.[sales_order_status], t1.[sales_order_look_up], t1.[total_price_line], t1.[total_price_line_costs], t1.[total_price_header_costs], t1.[total_price_order], t1.[shipping_address_id], t1.[neutral_delivery], t1.[default_sales_location], t1.[total_processing_discount], t1.[sales_order_discount], t1.[sales_order_discount_percentage], t1.[sales_order_gross_profit], t1.[total_price_order_including_discount], t1.[added_by_look_up], t1.[vat_type_id], t1.[total_price_incl_vat_discount], t1.[default_price], t1.[default_price_per], t1.[contains_crossdock], t1.[purchase_order_crossdock], t1.[sales_order_form_id], t1.[charge_costs_type], t1.[added_on_look_up], t1.[total_order_amount_kg], t1.[use_po_box], t1.[pick_up_time], t1.[on_hold_logistic], t1.[total_cost_price], t1.[total_gross_profit_percentage], t1.[added_by], t1.[added_on], t1.[modified_by], t1.[modified_on]
from (
select t1.[sales_order_id], t1.[administration_id], t1.[customer_id], t1.[sales_order_number], t1.[sales_order_type], t1.[based_on_complaint_id], t1.[payment_term_id], t1.[delivery_term_id], t1.[customer_reference], t1.[delivery_address_id], t1.[type_delivery_date], t1.[delivery_date], t1.[delivery_year], t1.[delivery_month], t1.[delivery_week], t1.[currency_code], t1.[logistics_remark], t1.[invoice_organisation_id], t1.[invoice_recipient_person_id], t1.[avg_invoice_recipient_person_id], t1.[invoice_address_id], t1.[regular_confirmation_or_pro_forma], t1.[certificate_recipient_person_id], t1.[avg_certificate_recipient_person_id], (dbo.get_exchange_rate(t1.administration_id,t1.currency_code,t1.delivery_date)
)
 as [exchange_rate], t1.[quotation_or_order], t1.[valid_until], t1.[delivery_time_after_agreement], t1.[delivery_time_sort], t1.[organisation_remark], t1.[agent_id], t1.[organisation_agent_fee], t1.[commission_calculation], t1.[commission_amount], t1.[percentage_amount], t1.[customer_contact_id], t1.[avg_customer_contact_id], t1.[manual_calculation_agent_fee], t1.[current_credit_limit], t1.[sales_order_status], (select iif(so.quotation_or_order = 1
          ,'Order nr. '
          ,'Offerte nr. ') + cast(so.sales_order_number as varchar(30)) + ' - ' 
                           + o.organisation_name  as sales_order_look_up
  from sales_order so
  join organisation o 
    on o.organisation_id = so.customer_id
 where so.sales_order_id = t1.sales_order_id
)
 as [sales_order_look_up], t1.[total_price_line], t1.[total_price_line_costs], t1.[total_price_header_costs], t1.[total_price_order], t1.[shipping_address_id], t1.[neutral_delivery], t1.[default_sales_location], t1.[total_processing_discount], t1.[sales_order_discount], t1.[sales_order_discount_percentage], t1.[sales_order_gross_profit], ((t1.total_price_order - ISNULL(t1.sales_order_discount, 0))
)
 as [total_price_order_including_discount], (t1.added_by
)
 as [added_by_look_up], t1.[vat_type_id], ((t1.total_price_order - ISNULL(t1.sales_order_discount, 0)) + 
((t1.total_price_order - ISNULL(t1.sales_order_discount, 0)) *
(select vat_percentage / 100 from vat_type where vat_type_id = t1.vat_type_id))

)
 as [total_price_incl_vat_discount], t1.[default_price], t1.[default_price_per], (select top 1 crossdock_type
  from sales_order_line sol 
 where sol.sales_order_id = t1.sales_order_id
 order by crossdock_type desc
)
 as [contains_crossdock], (select 'Order nr. ' + STRING_AGG(cast(purchase_order_number as varchar(15)), ', ')
  from (select distinct dbo.get_purchase_order_number(x.purchase_order_id) purchase_order_number
          from purchase_order x
         where x.crossdocked_with_sales_order_id = t1.sales_order_id
      )y
)
 as [purchase_order_crossdock], t1.[sales_order_form_id], t1.[charge_costs_type], (cast(t1.added_on as date)
)
 as [added_on_look_up], t1.[total_order_amount_kg], t1.[use_po_box], t1.[pick_up_time], t1.[on_hold_logistic], t1.[total_cost_price], (isnull(t1.sales_order_gross_profit,0) /iif(t1.total_price_order = 0,1,isnull(t1.total_price_order,1)) * 100
)
 as [total_gross_profit_percentage], t1.[added_by], t1.[added_on], t1.[modified_by], t1.[modified_on]
from [sales_order] as t1
where ((dbo.check_sales_order_status_is_open(t1.sales_order_id) = 1
)  and (t1.administration_id in (select administration_id from dbo.get_my_administrations())
)  and (t1.administration_id = dbo.get_my_current_administration()
) )
) as t1
     left outer join (
select t1.[administration_id], t1.[organisation_id], ((select organisation_name from organisation t2 where t2.organisation_id = t1.organisation_id)
)
 as [customer_name]
from [customer] as t1
) as t2 on t1.[administration_id] = t2.[administration_id] and t1.[customer_id] = t2.[organisation_id]
     left outer join (
select t1.[delivery_term_id], t1.[delivery_term_name]
from [delivery_term] as t1
) as t3 on t1.[delivery_term_id] = t3.[delivery_term_id]
where (t1.[added_by_look_up] = 'me' and t2.[customer_name] = N'Customer' and t3.[delivery_term_name] = N'Niet van Toepassing')
order by t1.[sales_order_id] desc

This is after I use a formatting tool, please note, it looks even better in SSMS:


select top 1000 t1.[sales_order_id]
               ,t1.[administration_id]
               ,t1.[customer_id]
               ,t1.[sales_order_number]
               ,t1.[sales_order_type]
               ,t1.[based_on_complaint_id]
               ,t1.[payment_term_id]
               ,t1.[delivery_term_id]
               ,t1.[customer_reference]
               ,t1.[delivery_address_id]
               ,t1.[type_delivery_date]
               ,t1.[delivery_date]
               ,t1.[delivery_year]
               ,t1.[delivery_month]
               ,t1.[delivery_week]
               ,rtrim(t1.[currency_code]) as [currency_code]
               ,t1.[logistics_remark]
               ,t1.[invoice_organisation_id]
               ,t1.[invoice_recipient_person_id]
               ,t1.[avg_invoice_recipient_person_id]
               ,t1.[invoice_address_id]
               ,t1.[regular_confirmation_or_pro_forma]
               ,t1.[certificate_recipient_person_id]
               ,t1.[avg_certificate_recipient_person_id]
               ,t1.[exchange_rate]
               ,t1.[quotation_or_order]
               ,t1.[valid_until]
               ,t1.[delivery_time_after_agreement]
               ,t1.[delivery_time_sort]
               ,t1.[organisation_remark]
               ,t1.[agent_id]
               ,t1.[organisation_agent_fee]
               ,t1.[commission_calculation]
               ,t1.[commission_amount]
               ,t1.[percentage_amount]
               ,t1.[customer_contact_id]
               ,t1.[avg_customer_contact_id]
               ,t1.[manual_calculation_agent_fee]
               ,t1.[current_credit_limit]
               ,t1.[sales_order_status]
               ,t1.[sales_order_look_up]
               ,t1.[total_price_line]
               ,t1.[total_price_line_costs]
               ,t1.[total_price_header_costs]
               ,t1.[total_price_order]
               ,t1.[shipping_address_id]
               ,t1.[neutral_delivery]
               ,t1.[default_sales_location]
               ,t1.[total_processing_discount]
               ,t1.[sales_order_discount]
               ,t1.[sales_order_discount_percentage]
               ,t1.[sales_order_gross_profit]
               ,t1.[total_price_order_including_discount]
               ,t1.[added_by_look_up]
               ,t1.[vat_type_id]
               ,t1.[total_price_incl_vat_discount]
               ,t1.[default_price]
               ,t1.[default_price_per]
               ,t1.[contains_crossdock]
               ,t1.[purchase_order_crossdock]
               ,t1.[sales_order_form_id]
               ,t1.[charge_costs_type]
               ,t1.[added_on_look_up]
               ,t1.[total_order_amount_kg]
               ,t1.[use_po_box]
               ,t1.[pick_up_time]
               ,t1.[on_hold_logistic]
               ,t1.[total_cost_price]
               ,t1.[total_gross_profit_percentage]
               ,t1.[added_by]
               ,t1.[added_on]
               ,t1.[modified_by]
               ,t1.[modified_on]
  from (select t1.[sales_order_id]
              ,t1.[administration_id]
              ,t1.[customer_id]
              ,t1.[sales_order_number]
              ,t1.[sales_order_type]
              ,t1.[based_on_complaint_id]
              ,t1.[payment_term_id]
              ,t1.[delivery_term_id]
              ,t1.[customer_reference]
              ,t1.[delivery_address_id]
              ,t1.[type_delivery_date]
              ,t1.[delivery_date]
              ,t1.[delivery_year]
              ,t1.[delivery_month]
              ,t1.[delivery_week]
              ,t1.[currency_code]
              ,t1.[logistics_remark]
              ,t1.[invoice_organisation_id]
              ,t1.[invoice_recipient_person_id]
              ,t1.[avg_invoice_recipient_person_id]
              ,t1.[invoice_address_id]
              ,t1.[regular_confirmation_or_pro_forma]
              ,t1.[certificate_recipient_person_id]
              ,t1.[avg_certificate_recipient_person_id]
              , (dbo.get_exchange_rate (t1.administration_id,t1.currency_code,t1.delivery_date
                                       )
                ) as [exchange_rate]
              ,t1.[quotation_or_order]
              ,t1.[valid_until]
              ,t1.[delivery_time_after_agreement]
              ,t1.[delivery_time_sort]
              ,t1.[organisation_remark]
              ,t1.[agent_id]
              ,t1.[organisation_agent_fee]
              ,t1.[commission_calculation]
              ,t1.[commission_amount]
              ,t1.[percentage_amount]
              ,t1.[customer_contact_id]
              ,t1.[avg_customer_contact_id]
              ,t1.[manual_calculation_agent_fee]
              ,t1.[current_credit_limit]
              ,t1.[sales_order_status]
              , (select iif(so.quotation_or_order = 1,'Order nr. ','Offerte nr. ') + cast(so.sales_order_number as varchar(30)) + ' - ' + o.organisation_name as sales_order_look_up
                   from sales_order as so
                   join organisation as o
                     on o.organisation_id = so.customer_id
                  where so.sales_order_id = t1.sales_order_id
                ) as [sales_order_look_up]
              ,t1.[total_price_line]
              ,t1.[total_price_line_costs]
              ,t1.[total_price_header_costs]
              ,t1.[total_price_order]
              ,t1.[shipping_address_id]
              ,t1.[neutral_delivery]
              ,t1.[default_sales_location]
              ,t1.[total_processing_discount]
              ,t1.[sales_order_discount]
              ,t1.[sales_order_discount_percentage]
              ,t1.[sales_order_gross_profit]
              , ( (t1.total_price_order - isnull(t1.sales_order_discount,0)
                  )
                ) as [total_price_order_including_discount]
              , (t1.added_by
                ) as [added_by_look_up]
              ,t1.[vat_type_id]
              , ( (t1.total_price_order - isnull(t1.sales_order_discount,0)
                  ) + ( (t1.total_price_order - isnull(t1.sales_order_discount,0)
                        ) * (select vat_percentage / 100
                               from vat_type
                              where vat_type_id = t1.vat_type_id
                            )
                      )
                ) as [total_price_incl_vat_discount]
              ,t1.[default_price]
              ,t1.[default_price_per]
              , (select top 1 crossdock_type
                   from sales_order_line as sol
                  where sol.sales_order_id = t1.sales_order_id
                  order by crossdock_type desc
                ) as [contains_crossdock]
              , (select 'Order nr. ' + string_agg(cast(purchase_order_number as varchar(15)),', ')
                   from (select distinct 
                                dbo.get_purchase_order_number (x.purchase_order_id
                                                              ) as purchase_order_number
                           from purchase_order as x
                          where x.crossdocked_with_sales_order_id = t1.sales_order_id
                        ) as y
                ) as [purchase_order_crossdock]
              ,t1.[sales_order_form_id]
              ,t1.[charge_costs_type]
              , (cast(t1.added_on as date)
                ) as [added_on_look_up]
              ,t1.[total_order_amount_kg]
              ,t1.[use_po_box]
              ,t1.[pick_up_time]
              ,t1.[on_hold_logistic]
              ,t1.[total_cost_price]
              , (isnull(t1.sales_order_gross_profit,0) / iif(t1.total_price_order = 0,1,isnull(t1.total_price_order,1)) * 100
                ) as [total_gross_profit_percentage]
              ,t1.[added_by]
              ,t1.[added_on]
              ,t1.[modified_by]
              ,t1.[modified_on]
          from [sales_order] as t1
         where ( (dbo.check_sales_order_status_is_open (t1.sales_order_id
                                                       ) = 1
                                                            )
                 and (t1.administration_id in (select administration_id
                                                 from dbo.get_my_administrations()
                                              )
                     )
                 and (t1.administration_id = dbo.get_my_current_administration()
                                                                                )
               )
       ) as t1
  left outer join (select t1.[administration_id]
                         ,t1.[organisation_id]
                         , ( (select organisation_name
                                from organisation as t2
                               where t2.organisation_id = t1.organisation_id
                             )
                           ) as [customer_name]
                     from [customer] as t1
                  ) as t2
    on t1.[administration_id] = t2.[administration_id]
       and t1.[customer_id] = t2.[organisation_id]
  left outer join (select t1.[delivery_term_id]
                         ,t1.[delivery_term_name]
                     from [delivery_term] as t1
                  ) as t3
    on t1.[delivery_term_id] = t3.[delivery_term_id]
 where (t1.[added_by_look_up] = 'me'
        and t2.[customer_name] = N'Customer'
        and t3.[delivery_term_name] = N'Niet van Toepassing'
       )
 order by t1.[sales_order_id] desc

 

Did this topic help you find an answer to your question?

1 reply

Jasper
Superhero
  • 678 replies
  • February 1, 2021
Updated idea status NewOpen

Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings