2015-08-07 6 views
0

Я новичок в SQL, поэтому извиняюсь, если я получил номенклатуру не так (или если решение ослепительно очевидно).SQL Выбор из одной таблицы соединений

Мой код что-то вроде:

Select Client_id, Max(Year_end_date), Acct_Nbr  
From ( 
     -- ** subquery ** 
) As AA  
Group By Client_id, Acct_nbr; 

столбцов в подзапросе является таким же, как основным запрос. Однако я получаю некоторые дубликаты в ответ - это означает то же самое для данной Client_id DB2 возвращает несколько строк с разными датами - например

Client_id | Year_end_date | Acct_nbr 
------------------------------------- 
20001  2003-12-31  01  
20001  2005-12-31  01 

Любая идея, почему?

+0

, пожалуйста, отправьте свой подзапрос, а также –

+3

. У вас есть «группа», поэтому я полагаю, что значения на самом деле разные - просто скрытые символы или неожиданное замешательство, такие как ноль и капитал-O. –

+0

Подзапрос является длинным и сложным. То, что я пытался получить, было, если все вычисления выполняются в подзапросе, и я могу прокомментировать основной запрос, чтобы увидеть результаты подзапроса - почему это имеет значение, что такое подзапрос? Главный запрос должен просто вернуть max (Year_end_date), правильно? – Ardia

ответ

2

Попробуйте это:

Select '>>' || Client_id || '<<', Max(Year_end_date), '>>' || Acct_Nbr || '<<' 
From ( 
     -- ** subquery ** 
) As AA  
Group By Client_id, Acct_nbr; 

Вы также можете попробовать вызвать TRIM() на полях CLIENT_ID и Acc_nbr в суб-запроса. Кажется, у вас там скрытые пространства.

+0

... хотя из его взглядов (и, надеюсь) 'client_id' является автогенным, числовым идентификатором, поэтому наиболее вероятным виновником является' acct_nbr'. –