2012-04-27 3 views
0

ОБНОВЛЕНИЕ: извините за замешательство. «table» не было моим фактическим именем табуляции, я обновил его с правильным именем, а также больше информации об ошибке ниже.SQL-запрос для объединения дубликатов и суммы

У меня есть таблица под названием TrackingNumbers с двумя столбцами. Данные колонки OrderID иногда повторяется, поскольку есть несколько партий в порядке (я не проектировал базу данных):

orderid shipment_cost 
1021 5.34 
1021 7.83 
1022 5.19 
1023 5.59 

Как я могу добавить все значения shipment_cost когда OrderID повторяется с помощью запроса SQL? Поэтому я хотел бы результаты запроса выглядеть следующим образом:

orderid shipment_cost 
1021 13.17 
1022 5.19 
1023 5.59 

Мое предположение, что это звучит примерно так:

SELECT orderid, SUM(shipment_cost) FROM TrackingNumbers GROUP BY orderid 

Но это дает мне Неизвестная ошибка SQL. Не уверен, что это мой запрос или глупое проприетарное приложение. Спасибо за любой совет!


UPDATE 2: Так появляется мой запрос был в порядке в соответствии с ответами и я дважды проверил на своем сервере MySQL, возвращается OK. Это должна быть ошибка приложения (Volusion). У них есть дрянной маленький интерфейс для запуска пользовательских отчетов, и он, похоже, завершает мой SQL-запрос дополнительными материалами. Погрешность от Volusion:

SQL Error: SELECT * ,17041 as RecordCount 
      FROM (SELECT TOP 10 * 
       FROM (SELECT TOP 10 orderid, SUM(shipment_cost) 
         FROM TrackingNumbers 
         GROUP BY orderid ORDER BY) 
       SUBSEL ORDER BY) 
      PAGESEL ORDER BY 

А если добавить ORDER BY как

SELECT orderid, SUM(shipment_cost) 
FROM TrackingNumbers 
GROUP BY orderid 
ORDER BY orderid ASC 

, так это то, что он, кажется, он хочет:

SQL Error: SELECT * ,17041 as RecordCount 
      FROM (SELECT TOP 10 * 
       FROM (SELECT TOP 10 orderid, SUM(shipment_cost) 
         FROM TrackingNumbers 
         GROUP BY orderid 
         ORDER BY orderid ASC) 
       SUBSEL ORDER BY orderid DESC) 
      PAGESEL ORDER BY orderid ASC 

Guess мне придется увидеть, если Volusion-х поддержка может предоставить любые подсказки. Еще раз спасибо!


Update3: Конечно поддержка Volusion не приносит никакой пользы, даже если я сказал им, что этот запрос работает на другом сервере SQL, и это очевидно, их интерфейс коверкая его. Похоже, мне придется импортировать данные в мою базу данных вниз и манипулировать им там.

+3

Если это ваш точный запрос, вам нужно бежать 'table', так что это SQL ключевое слово. –

+0

Ваш запрос выглядит хорошо для меня, какова ваша полная ошибка SQL? Это может быть вызвано чем-то другим. – Nick

+1

@Nick: Если я правильно понимаю OP, им должно быть запрещено видеть полное сообщение об ошибке «глупым проприетарным приложением». –

ответ

2

Я попробовал один и тот же запрос с базой данных Northwind, где я пытаюсь подытожить перевозку, где CustomerID являются равными,

Вы можете проверить то же самое на SQLFiddle

Я также исправленный запрос, и теперь он должен работать:

Вам просто нужно дать псевдонимы в наиболее внутренний выбор для суммы в качестве SUM(shipment_cost) as Freight

SELECT * ,17041 as RecordCount 
    FROM(SELECT TOP 10 * 
     FROM(SELECT TOP 10 orderid, SUM(shipment_cost) as Freight 
      FROM TrackingNumbers 
      GROUP BY orderid 
      ORDER BY orderid ASC) 
     SUBSEL ORDER BY orderid DESC) 
    PAGESEL ORDER BY orderid ASC 
+0

Извините за беспорядок, стол был просто что-то общее, а не мое фактическое имя-табло. Итак, в основном, что вы говорите, мой запрос был правильным. Тогда это должно быть что-то с приложением. – reflexiv

+0

@reflexiv см. В редакции. – Marshal

+0

Я получаю эту ошибку при попытке запустить в Volusion: 'Ошибка SQL: предложение ORDER BY недействительно в представлениях, встроенных функциях, производных таблицах, подзапросах и общих табличных выражениях, если не указано значение TOP или FOR XML.' TOP явно определен и работает в SQLFiddle, поэтому не уверен, что происходит. – reflexiv

2

Использование ниже запроса

SELECT orderid, SUM(shipment_cost) FROM [table] GROUP BY orderid 

table является SQL ключевое слово

+0

Извините за путаницу, стол был просто что-то общее, а не мое фактическое имя-табло. Итак, в основном, что вы говорите, мой запрос был правильным. Тогда это должно быть что-то с приложением. – reflexiv

Смежные вопросы