Хотите скопировать — customerid, max (цена) из таблицы items_ordered в новую таблицу в SQL Server

#sql #sql-server #select

#sql #sql-сервер #выберите

Вопрос:

Хотите скопировать customerid и максимальную цену из таблицы items_ordered в новую таблицу (скажем, A). Я не знаю, как скопировать, когда есть агрегатная функция, иначе запрос будет работать без столбца агрегатной функции.

пробовал вот так:

 select customerid, max(price) into A from items_ordered group by customerid;
  

Таблица items_ordered : (http://www.sqlcourse2.com/items_ordered.html )

 customerid  order_date  item      quantity  price
10330       30-Jun-1999 Pogo stick      1   28.00
10101       30-Jun-1999 Raft            1   58.00
10298       01-Jul-1999 Skateboard      1   33.00
10101       01-Jul-1999 Life Vest       4   125.00
10299       06-Jul-1999 Parachute       1   1250.00
10339       27-Jul-1999 Umbrella        1   4.50
10449       13-Aug-1999 Unicycle        1   180.79
10439       14-Aug-1999 Ski Poles       2   25.50
10101       18-Aug-1999 Rain Coat       1   18.30
10449       01-Sep-1999 Snow Shoes      1   45.00
10439       18-Sep-1999 Tent            1   88.00
10298       19-Sep-1999 Lantern         2   29.00
10410       28-Oct-1999 Sleeping Bag    1   89.22
10438       01-Nov-1999 Umbrella        1   6.75
10438       02-Nov-1999 Pillow          1   8.50
10298       01-Dec-1999 Helmet          1   22.00
10449       15-Dec-1999 Bicycle         1   380.50
10449       22-Dec-1999 Canoe           1   280.00
10101       30-Dec-1999 Hoola Hoop      3   14.75
10330       01-Jan-2000 Flashlight      4   28.00
10101       02-Jan-2000 Lantern         1   16.00
10299       18-Jan-2000 Inflatable M... 1   38.00
10438       18-Jan-2000 Tent            1   79.99
10413       19-Jan-2000 Lawnchair       4   32.00
10410       30-Jan-2000 Unicycle        1   192.50
10315       02-Feb-2000 Compass         1   8.00
10449       29-Feb-2000 Flashlight      1   4.50
10101       08-Mar-2000 Sleeping Bag    2   88.70
10298       18-Mar-2000 Pocket Knife    1   22.38
10449       19-Mar-2000 Canoe paddle    2   40.00
10298       01-Apr-2000 Ear Muffs       1   12.50
10330       19-Apr-2000 Shovel          1   16.75
  

Результат:

Имя объекта или столбца отсутствует или пустое. Для SELECT INTO statements убедитесь, что у каждого столбца есть имя. Для других инструкций ищите пустые псевдонимы. Псевдонимы, определенные как «» или [], не допускаются. Измените псевдоним на допустимое имя.

Ответ №1:

Вам нужно указать псевдоним, который будет использоваться в качестве вновь созданного имени столбца для любого выражения, которое не является простым именем столбца:

 SELECT   customerid, MAX(price) AS max_price
INTO     a
FROM     items_ordered
GROUP BY customerid
  

Ответ №2:

// Вы можете попробовать это. Вам нужно присвоить максимальной цене подходящее имя.

      select customerid, price=max(price) into #A from items_ordered group by customerid

select * from #A
  

Ответ №3:

В основном у вас есть два варианта:

  1. SELECT ... INTO ... Запрос, который создает новую таблицу. Сначала создайте запрос SELECT, который выдает правильный результат. Затем включите предложение INTO-, чтобы указать целевую таблицу для вывода.
  2. INSERT ... SELECT ... Запрос, для которого требуется существующая целевая таблица. Поля целевой таблицы в предложении INSERT должны соответствовать полям в предложении SELECT.