Я хочу получить только верхний номер из инструкции SQL без ограничения других столбцов

#sql

#sql

Вопрос:

Составление отчета с использованием 4 таблиц (A, D, F и T), но возникает проблема с тем, что отчет принимает все числа в столбце, когда требуется только верхний 1.

Все данные в отчете точны, поэтому мои соединения хороши, но таблица F предоставляет больше данных, чем необходимо… Я пробовал Having , Max , top 1 и несколько других, но безуспешно

  SELECT DISTINCT 
     CONVERT(VARCHAR(30), a.begin_date_of_service, 101) AS Budget_date, 
     t.account_value, 
     a.procedure_code, 
     (t.amount) AS Budget_Track, 
     a.units_authorized, 
     f.amount, 
     d.total_estimated_liab, 
     a.claimed_units, 
     (a.claimed_units * f.amount) AS Paidout, 
     (d.rem_liab_total) AS remainingLiab, 
     ((t.amount) - (a.estimated_liability_code)) AS REMAINING, 
     CASE 
        WHEN d.patid IS NULL THEN f.provid 
        ELSE d.patid 
     END AS IdentifyMember 
  

F.AMOUNT столбец имеет 2 номера 90 и 80. 80 является самым последним или вверху.

Я не могу найти способ удалить 90, не вмешиваясь в оставшийся отчет

Ответ №1:

Вы можете отфильтровать свое объединение в таблице F, выбрав с помощью временной виртуальной таблицы с помощью команды WITH (в Oracle DB).

Пример: WITH TEMP_TABLE_F as (select * from f where column1 = 0)
select [same as your previous select statement] from A, D, TEMP_TABLE_F, T;

Ответ №2:

Вместо того, чтобы делать:

 JOIN F ON column = column
  

Попробуйте это вместо:

 JOIN (SELECT * FROM F WHERE AMOUNT = 90) F ON column = column
  

Это довольно распространенный синтаксис и должен работать в большинстве баз данных.