抛出SQL错误4145
我想让所有账户持有人的期末余额都为正。只有最后一个正期末余额是有趣的,所以我想要表的最大Id。我正在尝试下面的方法抛出SQL错误4145,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,我想让所有账户持有人的期末余额都为正。只有最后一个正期末余额是有趣的,所以我想要表的最大Id。我正在尝试下面的方法 SELECT DA.HOLDER, FAB.AMOUNT FROM ACCOUNTS_TABLE DA JOIN BALANCE_TABLE FAB ON FAB.ACCOUNT_ID = DA.ID WHERE FAB.IS_CLOSING = 1 AND FAB.AMOUNT > 0 GROUP BY DA.HOLDER H
SELECT DA.HOLDER, FAB.AMOUNT
FROM ACCOUNTS_TABLE DA
JOIN BALANCE_TABLE FAB ON FAB.ACCOUNT_ID = DA.ID
WHERE FAB.IS_CLOSING = 1 AND FAB.AMOUNT > 0
GROUP BY DA.HOLDER
HAVING MAX(FAB.DATE);
但当我尝试执行此查询时,会出现以下错误:
错误:在上下文中指定的非布尔类型的表达式,其中
应在“;”附近出现条件。SQLState:S0001错误代码:4145
出了什么问题?这是一个“每组最多n个”的问题,通常通过窗口函数来解决:
SELECT holder, amount, fab_date
FROM (
SELECT da.holder,
fab.amount,
fab.date as fab_date,
max(fab.date) OVER (PARTITION BY da.holder) as max_date
FROM accounts_table da
JOIN balance_table fab ON fab.account_id = da.id
WHERE fab.is_closing = 1
AND fab.amount > 0
)
WHERE fab_date = max_date;
这是一个“每组最多n个”的问题,通常通过窗口函数解决:
SELECT holder, amount, fab_date
FROM (
SELECT da.holder,
fab.amount,
fab.date as fab_date,
max(fab.date) OVER (PARTITION BY da.holder) as max_date
FROM accounts_table da
JOIN balance_table fab ON fab.account_id = da.id
WHERE fab.is_closing = 1
AND fab.amount > 0
)
WHERE fab_date = max_date;
这是一个“每组最多n个”的问题,通常通过窗口函数解决:
SELECT holder, amount, fab_date
FROM (
SELECT da.holder,
fab.amount,
fab.date as fab_date,
max(fab.date) OVER (PARTITION BY da.holder) as max_date
FROM accounts_table da
JOIN balance_table fab ON fab.account_id = da.id
WHERE fab.is_closing = 1
AND fab.amount > 0
)
WHERE fab_date = max_date;
这是一个“每组最多n个”的问题,通常通过窗口函数解决:
SELECT holder, amount, fab_date
FROM (
SELECT da.holder,
fab.amount,
fab.date as fab_date,
max(fab.date) OVER (PARTITION BY da.holder) as max_date
FROM accounts_table da
JOIN balance_table fab ON fab.account_id = da.id
WHERE fab.is_closing = 1
AND fab.amount > 0
)
WHERE fab_date = max_date;
您需要将
HAVING MAX(FAB.DATE)
中的值与其他值进行比较,例如:HAVING MAX(FAB.DATE)=current_DATE
我想要最后一个期末余额,我该怎么做?试试这个HAVING MAX(FAB.DATE)=从余额表中选择MAX(DATE?这看起来不像是Oracle的错误@Utsav,它不再按持有人分组。您需要将最大值(生产日期)
的值与其他值进行比较,例如:最大值(生产日期)=当前日期
我想要最后一个期末余额,我该怎么做?试试这个最大值(生产日期)=选择最大值(日期)从BALANCE_表中
是否确定应将其标记为Oracle?这看起来不像是Oracle的错误@Utsav,它不再按持有人分组。您需要将最大值(生产日期)
的值与其他值进行比较,例如:最大值(生产日期)=当前日期
我想要最后一个期末余额,我该怎么做?试试这个最大值(生产日期)=选择最大值(日期)从BALANCE_表中
是否确定应将其标记为Oracle?这看起来不像是Oracle的错误@Utsav,它不再按持有人分组。您需要将最大值(生产日期)
的值与其他值进行比较,例如:最大值(生产日期)=当前日期
我想要最后一个期末余额,我该怎么做?试试这个最大值(生产日期)=选择最大值(日期)从BALANCE_表中
是否确定应将其标记为Oracle?这看起来不像是Oracle的错误@Utsav,不再按持有者分组似乎是一个很好的解决方案,但我得到以下错误:错误:ORA-00904:“FAB”。“金额”:无效标识符SQLState:42000错误代码:904@Guil:抱歉,复制粘贴错误。外部查询中的别名错误。Corrected似乎是一个很好的解决方案,但我得到以下错误:错误:ORA-00904:“FAB”。“金额”:无效标识符SQLState:42000错误代码:904@Guil:抱歉,复制粘贴错误。外部查询中的别名错误。Corrected似乎是一个很好的解决方案,但我得到以下错误:错误:ORA-00904:“FAB”。“金额”:无效标识符SQLState:42000错误代码:904@Guil:抱歉,复制粘贴错误。外部查询中的别名错误。Corrected似乎是一个很好的解决方案,但我得到以下错误:错误:ORA-00904:“FAB”。“金额”:无效标识符SQLState:42000错误代码:904@Guil:抱歉,复制粘贴错误。外部查询中的别名错误。纠正