2015-02-25 3 views
1

Первоначальная публикация здесь надеется, что все будет хорошо.Oracle SQL Developer (4.0.0.12)

Я пытаюсь сделать запрос с Oracle SQL Developer, где он возвращает customer_ID из таблицы и время платежа от другого. Я уверен, что проблемы лежат в моем логическом потоке (давно я использовал SQL, и он вернулся в школу, поэтому я немного ржавый). Я хотел перечислить идентификаторы как DISTINCT и ORDER по датам ASCENDING, поэтому появится только первая дата.

Однако в некоторых случаях возвращенная таблица содержит одинаковые идентификаторы дважды или даже больше. Я даже нашел один и тот же идентификатор и тот же DATE несколько раз, пока я прокручивал его.

Если вы хотите узнать больше, спрашивайте!

SELECT DISTINCT 
    FIRM.customer.CUSTOMER_ID, 
    FIRM.account_recharge.X__INSDATE FELTOLTES 
FROM 
    FIRM.customer 
     INNER JOIN FIRM.account 
     ON FIRM.customer.CUSTOMER_ID = FIRM.account.CUSTOMER 
      INNER JOIN FIRM.account_recharge 
      ON FIRM.account.ACCOUNT_ID = FIRM.account_recharge.ACCOUNT 
WHERE 
    FIRM.account_recharge.X__INSDATE BETWEEN TO_DATE('14-01-01', 'YY-MM-DD') AND TO_DATE('14-12-31', 'YY-MM-DD') 
ORDER 
    BY FELTOLTES 
+0

'Distinct' применяется ко всем столбцам в списке выбора. См. Мой ответ. –

+0

Спасибо, ребята! оба ваших решения работали по назначению! (Я думал, что пропущу что-то очень элементарное ...) Пока не могу выдвинуть, так что могу только сказать спасибо, снова :) (Не могу я отметить этот вопрос как-то так ответ?) –

+0

Вы действительно можете принять ответы – ytg

ответ

0

Ваш выбор работает так, потому что CUSTOMER_ID действительно имеет более одного X__INSDATE, поэтому записи в результате будут отличными. Если вам нужна только первая дата, не используйте DISTINCT и ORDER BY, но постарайтесь выбрать для MIN(X__INSDATE) и использовать GROUP BY CUSTOMER_ID.

0

SELECT DISTINCT FIRM.customer.CUSTOMER_ID, FIRM.account_recharge.X__INSDATE FELTOLTES

Distinct применяется к обоим столбцам вместе, что означает, что вы получите отличный ROW для набор значений из двух столбцов. Таким образом, в основном различный относится ко всем столбцам в списке выбора.

Это эквивалентно выбору без четкого, но группового предложения.

Это означает,

select distinct a, b....

эквивалентно,

select a, b...group by a, b

Если вы хотите желаемый результат, то CONCATENATE колонны. Затем distict будет работать с одним конкатенированным набором результатов.

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