2013-11-02 2 views
0

Мне нужна помощь. У меня есть две таблицы, которые, как мне известно, должны быть объединены, а не проблема. Мне нужно отобразить номер счета, дату счета и общую сумму доллара для всех продуктов, купленных в счете-фактуре. Информация должна быть заказана по номеру счета в порядке убывания, а затем по дате выставления счета в порядке возрастания. То, что я до сих пор, и бросает ошибки, является:SUM, JOIN, GROUP BY, ORDER BY, PARTITION, OVER. Что мне не хватает?

SELECT   LINE.INV_NUMBER, 
       INVOICE.INV_DATE, 
       SUM(LINE.LINE_PRICE) 
      FROM LINE 
FULL OUTER JOIN INVOICE ON LINE.INV_NUMBER=INVOICE.INV_NUMBER 
     GROUP BY LINE.INV_NUMBER 
     ORDER BY LINE.INV_NUMBER DESC, 
       INVOICE.INV_DATE ASC; 

Любой помощи ценится, прежде чем я вытащить все мои волосы.

Update:

Я обновил свое выступление:

SELECT LINE.INV_NUMBER AS "Line Number", 
     INVOICE.INV_DATE AS "Invoice Date", 
     SUM(LINE.LINE_PRICE) AS "Total Sales" 
    FROM INVOICE FULL OUTER JOIN LINE ON INVOICE.INV_NUMBER=LINE.INV_NUMBER 
GROUP BY LINE.INV_NUMBER, INVOICE.INV_DATE 
ORDER BY LINE.INV_NUMBER DESC, INVOICE.INV_DATE ASC; 

и я получаю данные вместо ошибок. У меня теперь возникает проблема: мне нужны данные для чтения, упорядоченные по номеру счета в порядке убывания, и по дате счета в порядке возрастания, поэтому я предполагаю, что мне нужны два вывода данных. Как мне это сделать?

+0

Какие ошибки вы получаете? –

+0

я получал * Причина: начиная Ошибка в строке 26 в команде: ВЫБОР LINE.INV_NUMBER, INVOICE.INV_DATE, СУММА (LINE.LINE_PRICE) из линии LEFT JOIN ON ФАКТУРУ LINE.INV_NUMBER = INVOICE.INV_NUMBER GROUP BY LINE. INV_NUMBE ORDER BY DESC LINE.INV_NUMBER, INVOICE.INV_DATE ASC Ошибка в командной строке: 26 Колонка: отчет 139 Ошибка: Ошибка SQL: ORA-00904: "LINE" "INV_NUMBE":. недопустимый идентификатор 00904. 00000 - " % s: недопустимый идентификатор « * Причина: * Действие: Но я изменил свой код, поместив INVOICE.INV_DATE в группу By и получая данные. – user2948642

+0

У меня теперь есть проблема: мне нужны данные для чтения, упорядоченные по номеру счета в порядке убывания, и по дате счета в порядке возрастания, поэтому я предполагаю, что мне нужны два вывода данных. Как мне это сделать? – user2948642

ответ

0

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

Возможно, вам нужно включить INV_DATE, LINE_PRICE, а затем получить их агрегат в предложении select.

обратитесь к нескольким группам примеров на java2s.com, который является полезным сайтом.

С уважением, Срихари

+0

Я сделал то, что вы предложили, прежде чем я увидел ваше сообщение, и на самом деле получаю данные вместо ошибок. Теперь у меня проблема: мне нужны данные для чтения, упорядоченные по номеру счета в порядке убывания, и по дате счета в порядке возрастания, поэтому я предполагаю, что мне нужны два вывода данных. Как мне это сделать? – user2948642

0

Попробуйте GROUP BY LINE.INV_NUMBER, INVOICE.INV_DATE

В зависимости от СУБД вы используете, он может или не может быть проблемой.

+0

Я сделал то, что вы предложили, прежде чем я увидел ваше сообщение, и на самом деле я получаю данные вместо ошибок. Теперь у меня проблема: мне нужны данные для чтения, упорядоченные по номеру счета в порядке убывания, и по дате счета в порядке возрастания, поэтому я предполагаю, что мне нужны два вывода данных. Как мне это сделать? – user2948642

0
SELECT LINE.INV_NUMBER AS "Line Number", 
     INVOICE.INV_DATE AS "Invoice Date", 
     SUM(LINE.LINE_PRICE) AS "Total Sales" 
    FROM INVOICE FULL OUTER JOIN LINE ON INVOICE.INV_NUMBER=LINE.INV_NUMBER 
GROUP BY LINE.INV_NUMBER, INVOICE.INV_DATE 
ORDER BY INVOICE.INV_DATE ASC, LINE.INV_NUMBER DESC; 
Смежные вопросы