Learn.net37 Ответов: 1

Неправильный синтаксис рядом с Союзом


Здравствуйте, у меня есть этот сохраненный производитель, который объединяет много таблиц, и я хочу заказать по apartemetnoen, как вы видите вниз и все еще даете мне ошибку рядом с Союзом

Что я уже пробовал:

SELECT 
	   [Spare6]
      ,[Spare5]
      ,[Spare4]
      ,[Spare3]
      ,[Spare2]
      ,[Spare1]
      ,[details]
      ,[note]
      ,[documents]
      ,[termsofpaymneten]
      ,[termsofpaymnet]
      ,[aprtmentstatusen]
      ,[aprtmentstatus]
      ,[amountdateen]
      ,[amountdate]
      ,[amountleft]
      ,[amountpaid]
      ,[rent]
      ,[noofpayemtsen]
      ,[noofpayemts]
      ,[sourceen]
      ,[source]
      ,[iddateen]
      ,[iddate]
      ,[idnumber]
      ,convert(datetime, contractenen, 111) as contractenen
      ,[contracten]
      ,[contractstarten]
      ,[contractstart]
      ,[contractnoen]
      ,[contractno]
      ,[nationalityen]
      ,[nationality]
      ,[secondpartyen]
      ,[secondparty]
      ,[firstpartyen]
      ,[firstparty]
      ,[apartemetnnoen]
      ,[apartemetnno]
      ,[Bulidingnoen]
      ,[Bulidingno]
      ,[No] FROM [All_Vech].[dbo].[Bulding_Sharfya]  
	WHERE [idnumber] LIKE '%' + @idnumber + '%' OR [Bulidingno] Like '%' + @Bulidingno + '%' OR [Bulidingnoen] LIKE '%' + @Bulidingnoen + '%' OR [apartemetnno] LIKE '%' + @apartemetnno + '%'  OR [apartemetnnoen] LIKE '%' + @apartemetnnoen + '%'  OR secondparty LIKE '%' + @secondparty + '%' OR secondpartyen LIKE '%' + @secondpartyen + '%' OR nationality LIKE '%' + @nationality + '%' OR nationalityen LIKE '%' + @nationalityen + '%' OR [contractno] LIKE '%' + @contractno + '%'  OR [contractnoen] LIKE '%' +  @contractnoen + '%' OR [contracten] Like '%' + @contracten + '%' 
	ORDER BY apartemetnnoen DESC;
UNION

1 Ответов

Рейтинг:
4

Wendelius

Поскольку у вас есть только один оператор SELECT, удалите предложение UNION из конца вашего SQL.

Иначе говоря

...
	WHERE [idnumber] LIKE '%' + @idnumber + '%' OR [Bulidingno] Like '%' + @Bulidingno + '%' OR [Bulidingnoen] LIKE '%' + @Bulidingnoen + '%' OR [apartemetnno] LIKE '%' + @apartemetnno + '%'  OR [apartemetnnoen] LIKE '%' + @apartemetnnoen + '%'  OR secondparty LIKE '%' + @secondparty + '%' OR secondpartyen LIKE '%' + @secondpartyen + '%' OR nationality LIKE '%' + @nationality + '%' OR nationalityen LIKE '%' + @nationalityen + '%' OR [contractno] LIKE '%' + @contractno + '%'  OR [contractnoen] LIKE '%' +  @contractnoen + '%' OR [contracten] Like '%' + @contracten + '%' 
	ORDER BY apartemetnnoen DESC;
UNION

Для получения дополнительной информации и примеров ознакомьтесь с СОЮЗ (Transact-SQL) | Microsoft Docs[^]


Learn.net37

ну, у меня есть несколько вариантов выбора того же самого, что и топ, поэтому я его не публиковал

Wendelius

Если это так, то удалите точку с запятой, заканчивающую первый запрос. Также заказ должен быть только один раз и в конце. В порядке по Вы не можете ссылаться на столбцы по их именам, вместо этого вам нужно использовать порядковые номера, основанные на местоположении в вашем запросе.

Например

Выберите название, отдел
от сотрудников
СОЮЗ
Выберите название, отдел
от подрядчиков
ЗАКАЗ НА 2, 1

Приведенный выше запрос выбирает данные из обеих таблиц и сортирует результат сначала по отделу, а затем по имени.