Попытка сделать представление с образцом базы данных и не может получить его - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь создать представление для продуктов с описаниями на английском языке в порядке возрастания. Также озаглавив его LastName_vProductLinesUSA.

Вот несколько скриншотов базы данных:

  1. Обзор базы данных
  2. SalesLT.vProductandDescription

  3. SalesLT.Product

  4. SalesLT.ProductDescription

Я пытался использовать запрос:

CREATE VIEW LastName_vProductLinesUSA 
AS 
    SELECT 
        [ProductID], [Name], [ProductModel], [Description] 
    FROM 
        [SalesLT.vProductAndDescription] 
    ORDER BY
        [Description];

Но когда я пытаюсь выполнить запрос, я получаю эту ошибку:

Сообщение 1033, Уровень 15, Состояние 1, Процедура LastName_vProductLinesUSA, Строка 4 [Batch Start Line 0]
Предложение ORDER BY недопустимо в представлениях, встроенных функциях, производных таблицах, подзапросах и выражениях общих таблиц, если также не указаны TOP, OFFSET или FOR XML.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Удалите ORDER BY из представления:

CREATE VIEW LastName_vProductLinesUSA 
AS SELECT [ ProductID ], [ Name ], [ ProductModel ], [ Description ] 
FROM [ SalesLT.vProductAndDescription ] 
ORDER BY [ Description ] ; <--- remove this

Без него:

CREATE VIEW LastName_vProductLinesUSA 
AS SELECT [ ProductID ], [ Name ], [ ProductModel ], [ Description ] 
FROM [ SalesLT.vProductAndDescription ] 

Если вы хотите упорядочить результаты, упорядочите при выборе из представления:

SELECT * FROM LastName_vProductLinesUSA
ORDER BY [ Description ] ;

Примечание по стилю;квадратные скобки довольно некрасивы. Если вы пытаетесь сделать их красивее, окружив их пробелами, попробуйте вместо этого убрать квадратные скобки (и постарайтесь не использовать зарезервированные слова для идентификаторов, чтобы можно было избежать использования [])

0 голосов
/ 08 ноября 2019

Если вам нужен упорядоченный вид, вы должны использовать Top 100 percent

CREATE VIEW LastName_vProductLinesUSA 
AS SELECT TOP 100 PERCENT [ ProductID ], [ Name ], [ ProductModel ], [ Description ] 
FROM [ SalesLT.vProductAndDescription ] 
ORDER BY [ Description ] ;
...