Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
DaniilSeryi Member Откуда: Сообщений: 1758 |
Есть два View - Sales.SalesSummaryOverall and Sales.CustomerAndSalesSummary. CREATE VIEW Sales.SalesSummaryOverall AS SELECT CustomerId, SUM(SalesTotal) AS OverallTotal FROM Sales.SalesOrder GROUP BY CustomerId GO CREATE VIEW Sales.CustomerAndSalesSummary AS SELECT Customer.Name, SalesSummaryOverall.OverallTotal, (SELECT AVG(OverallTotal) FROM Sales.SalesSummaryOverall WHERE SalesSummaryOverall.CustomerId = Customer.CustomerId) AS avgOverallTotal, (SELECT MAX(OverallTotal) FROM Sales.SalesSummaryOverall WHERE SalesSummaryOverall.CustomerId = Customer.CustomerId) AS maxOverallTotal, FROM Sales.Customer LEFT OUTER JOIN Sales. Sales.SalesSummaryOverall ON SalesSummaryByYear.CustomerId = Customer.CustomerId GO Из Sales.CustomerAndSalesSummary необходимо удалить ссылки на другие View. Предполагается, что для этого можно использовать CTE. "You have been tasked to modify the Sales.CustomerAndSalesSummary view to remove references to other views. You need to identify a feature to use in the modified version of the Sales.CustomerAndSalesSummary object to achieve the task.Which feature should you use? A. Table variables B. Temporary tables C. User-defined table types D. Common table expressions Correct Answer: D" Вот как тут использовать CTE? С другой стороны, и даром этот CTE мне не нужен для замены ссылки на один View внутри другого View. |
12 авг 15, 16:46 [18009203] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
Ибо CTE лишь сильно всё упрощает в некоторых случаях. Стесняюсь спросить: а это, вообще-то, что такое? Тест Вам дали или экзамен сдаёте или домашнее задание делаете? |
||
12 авг 15, 16:53 [18009248] Ответить | Цитировать Сообщить модератору |
DaniilSeryi Member Откуда: Сообщений: 1758 |
Хм... Попробовал вставить CTE во View - получилось. Изврат, конечно, но получилось. Никогда не думал, что так можно. Запомним. Готовлюсь к экзамену на сертификат. Прорабатываю вопросы экзамена - закрываю дыры в знаниях. |
||||
12 авг 15, 17:08 [18009313] Ответить | Цитировать Сообщить модератору |
AlanDenton Member [скрыт] Откуда: Сообщений: 1004 |
CREATE VIEW Sales.CustomerAndSalesSummary AS SELECT c.Name, OverallTotal, avgOverallTotal, maxOverallTotal FROM Sales.Customer c LEFT JOIN ( SELECT CustomerId , OverallTotal = SUM(OverallTotal) , avgOverallTotal = AVG(OverallTotal) , maxOverallTotal = MAX(OverallTotal) FROM Sales.SalesSummaryOverall GROUP BY CustomerId ) t ON c.CustomerId = t.CustomerId почитайте про подзапросы... тем более в Вашем случае все можно элегантнее написать. |
12 авг 15, 17:28 [18009383] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |