CHill60
Ну что ж первая проблема которую вы получите это
Ambiguous column name 'SEG'.
Поскольку SEG существует как в таблице 1, так и в таблице 2, Вы должны явно указать Oracle, какой из них вы хотите использовать, например
SELECT * FROM TABLE1,TABLE2 WHERE TABLE1.SEG=TABLE2.SEG GROUP BY TABLE1.SEG
Но этот код просто приведет вас к следующей проблеме ...
Column 'TABLE1.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Вы, вероятно, никогда не столкнетесь с ситуацией, когда
SELECT *
это разумно при использовании с
GROUP BY
На самом деле гораздо лучше всегда перечислять нужные столбцы явно - это может быть более эффективно, но также останавливает устаревший код от взлома, если в будущем будут внесены изменения в схему таблицы.
Вы также используете очень старомодный способ объединения таблиц - используйте явный
JOIN
сорта и
ON
п. вместо например
SELECT FNAME+MNAME, MOB, T1.SEG, [DATE], NAT
FROM TABLE1 T1
INNER JOIN TABLE2 T2 ON T1.SEG = T2.SEG
Этот код даст вам
AS 11 11 1 KK
AD 12 11 1 KK
AS 11 11 2 KK
AD 12 11 2 KK
Следующая часть проблемы - это ваши ожидаемые результаты. Неясно, какую логику вы применяли, чтобы ожидать только этой одной линии результатов. Единственный способ, который я мог видеть, чтобы получить его был
SELECT MAX(FNAME+MNAME), MIN(MOB), T1.SEG, MIN([DATE]), MAX(NAT)
FROM TABLE1 T1
INNER JOIN TABLE2 T2 ON T1.SEG = T2.SEG
GROUP BY T1.SEG
но я почти уверен, что это так.
нет то, что ты действительно хочешь.
В качестве отступления вы увидите, что я использовал квадратные скобки вокруг
[DATE]
Это связано с тем, что дата является зарезервированным словом и не должна использоваться для имен столбцов, если она не заключена в [ ]