#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
Это довольно распространенный синтаксис и должен работать в большинстве баз данных.