. Using CTE improves the readability and makes maintenance of complex queries easy.
. The query can be divided into separate, simple, logical building blocks which can be then used to build more complex CTEs until final result set is generated.
. CTE can be defined in functions, stored procedures, triggers or even views.
. After a CTE is defined, it can be used as a Table or a View and can SELECT, INSERT, UPDATE or DELETE Data.