Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Просьба проконсультировать по использованию CTE в View.  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Просьба проконсультировать по использованию CTE в View.  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
DaniilSeryi
даром этот CTE мне не нужен для замены ссылки на один View внутри другого View
Напишите здесь свой вариант без CTE, пожалуйста. Это действительно можно сделать.
Ибо CTE лишь сильно всё упрощает в некоторых случаях.

Стесняюсь спросить: а это, вообще-то, что такое?
Тест Вам дали или экзамен сдаёте или домашнее задание делаете?
12 авг 15, 16:53    [18009248]     Ответить | Цитировать Сообщить модератору
 Re: Просьба проконсультировать по использованию CTE в View.  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1758
iap
DaniilSeryi
даром этот CTE мне не нужен для замены ссылки на один View внутри другого View
Напишите здесь свой вариант без CTE, пожалуйста. Это действительно можно сделать.
Ибо CTE лишь сильно всё упрощает в некоторых случаях.

Стесняюсь спросить: а это, вообще-то, что такое?
Тест Вам дали или экзамен сдаёте или домашнее задание делаете?


Хм... Попробовал вставить CTE во View - получилось. Изврат, конечно, но получилось. Никогда не думал, что так можно. Запомним.

Готовлюсь к экзамену на сертификат. Прорабатываю вопросы экзамена - закрываю дыры в знаниях.
12 авг 15, 17:08    [18009313]     Ответить | Цитировать Сообщить модератору
 Re: Просьба проконсультировать по использованию CTE в View.  [new]
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 Ответить