暂无图片
Oracle 相减函数
我来答
分享
暂无图片 匿名用户
Oracle 相减函数

请问,两行相加用sum函数

oracle 两行相减,为什么没有相减函数,

t 数据

id

3

2

相加  select sum(id) from t;

请问 相减的语句如何写? (用最简洁的语句)


我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
刘晓华

用lead或lag取后一行或前一行的id,再减即可

select  id - id_next

from  (

          select  id,lead(id,1) over(order by id) as id_next

           from   your_table_name

          )

暂无图片 评论
暂无图片 有用 0
咖啡哥

select id from t where id=3 

minus

select id from t where id=2

暂无图片 评论
暂无图片 有用 0
刘晓华
2023-06-13
他要的是数字相减不是结果集相减吧
咖啡哥
答主
2023-06-13
对对对,我看错了
水墨青花

SELECT SUM(CASE WHEN ROWNUM = 1 THEN id ELSE -id END) result FROM t;

暂无图片 评论
暂无图片 有用 0
水墨青花
  1. 创建一个代理账户

首先,在主要节点上创建一个代理帐户,并将其添加到 sysadmin 角色中,以便代理帐户可以执行作业或其他管理任务。这个代理账户应该被授权在目标服务器上执行需要同步的操作。

  1. 创建同步脚本

接下来,您需要编写脚本,该脚本将在主节点上运行,并将登录和作业信息同步到所有辅助副本上。脚本可包含以下查询或存储过程,用于同步登录和作业信息:

-- 同步登录
USE master
GO
DECLARE @loginName VARCHAR(100)
SELECT @loginName = name FROM sys.sql_logins WHERE type_desc = 'SQL_LOGIN'
EXEC sp_addlogin @loginame=@loginName, @passwd='password', @defdb='database', @deflanguage='us_english'
GO

-- 同步作业
USE msdb
GO
DECLARE @jobName VARCHAR(100)
SELECT @jobName = name FROM dbo.sysjobs
EXEC sp_add_job @job_name=@jobName
GO
  1. 创建 SQL Agent 作业

您还需要创建一个 SQL Agent 作业,以便在指定的时间自动运行脚本。该作业应在主要节点上创建,并且需要使用先前创建的代理帐户运行。

  1. 配置 AlwaysOn 同步

最后,您需要确保 AlwaysOn 同步设置正确,以便在主副本之间传输作业和登录信息。如果存在不同的 AlwaysOn 组,则必须针对每个组执行此操作。

总结:定时同步登陆用户和作业是一个很好的做法,以确保AlwaysOn集群中所有辅助副本都具有相同的配置。您可以通过创建代理账户、同步脚本、SQL Agent 作业和配置AlwaysOn同步来实现定期同步。

暂无图片 评论
暂无图片 有用 0
水墨青花
答主
2023-06-12
呀,答错地方了。是另外一题。。。忽略
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏