Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогит пожалуйста с SQL запросом

Nepeta Leijon Знаток (310), на голосовании 4 года назад
Если делать так, то всё работает:
SELECT [Процент запчастей на складе], [Цена за шт] *1.25 AS [Новая стоимость] INTO [Новая таблица]
FROM [Задание 4]
WHERE [Процент запчастей на складе] >= (SELECT Avg([Процент запчастей на складе]) FROM [Задание 4])

Потом я добавила UNION:
SELECT [Процент запчастей на складе], [Цена за шт] *1.25 AS [Новая стоимость] INTO [Новая таблица]
FROM [Задание 4]
WHERE [Процент запчастей на складе] >= (SELECT Avg([Процент запчастей на складе]) FROM [Задание 4])
UNION
SELECT [Процент запчастей на складе], [Цена за шт] *0.5 AS [Новая стоимость] INTO [Новая таблица]
FROM [Задание 4]
WHERE [Процент запчастей на складе] <= (SELECT Avg([Процент запчастей на складе]) FROM [Задание 4])

И он стал выдавать Запрос на изменение не может использоваться как источник строк. При этом запрос, задание 4 я никак не меняла.

Вот запрос, задание 4:
SELECT [Шифр запчасти], [Код поставщика], [Цена за шт], [Количество, штук] /(SELECT Sum([Количество, штук]) FROM [Учет запчастей]) *100 AS [Процент запчастей на складе]
FROM [Учет запчастей];
Голосование за лучший ответ
Xttx Мыслитель (9003) 4 года назад
Разные бд на такие запросы немного по разному реагируют.
В MsSql должно сработать вот так:
SELECT [Новая стоимость] INTO [Новая таблица] FROM (
SELECT [Процент запчастей на складе], [Цена за шт] *1.25 AS [Новая стоимость]
FROM [Задание 4]
WHERE [Процент запчастей на складе] >= (SELECT Avg([Процент запчастей на складе])
FROM [Задание 4])
UNION All
SELECT [Процент запчастей на складе], [Цена за шт] *0.5 AS [Новая стоимость]
FROM [Задание 4]
WHERE [Процент запчастей на складе] <= (SELECT Avg([Процент запчастей на складе]) FROM [Задание 4])
) as tmp

А в MySql, вроде достаточно оставить INTO после первого селекта :
SELECT [Процент запчастей на складе], [Цена за шт] *1.25 AS [Новая стоимость] INTO [Новая таблица]
FROM [Задание 4]
WHERE [Процент запчастей на складе] >= (SELECT Avg([Процент запчастей на складе]) FROM [Задание 4])
UNION
SELECT [Процент запчастей на складе], [Цена за шт] *0.5 AS [Новая стоимость]
FROM [Задание 4]
WHERE [Процент запчастей на складе] <= (SELECT Avg([Процент запчастей на складе]) FROM [Задание 4])
Nepeta LeijonЗнаток (310) 4 года назад
MsSQL всё заработало, спасибо огромное ❤
Похожие вопросы