报表的Sybase SQL脚本

报表的Sybase SQL脚本,sql,join,sybase,Sql,Join,Sybase,我正在尝试组合一个SQL脚本,该脚本将在一个脚本中提供以下信息: 节点,LastUpdateTime,字节写入 我想从domain_客户机中拉出具有最新LastUpdateTime的节点 From "domain_Client" table: Node lastUpdatedTime Server1 04042015 Server1 04082015 Server2 04072015 Server2 04062015 我在domain_JobArc

我正在尝试组合一个SQL脚本,该脚本将在一个脚本中提供以下信息: 节点,LastUpdateTime,字节写入

我想从domain_客户机中拉出具有最新LastUpdateTime的节点

From "domain_Client" table:
Node        lastUpdatedTime
Server1     04042015
Server1     04082015
Server2     04072015
Server2     04062015
我在domain_JobArchive中发现了一个不同的表,其中包含BytesWrited和LastUpdateTime(而不是刚刚写入BytesWrited的旧domain_作业)

预期结果:

Node        lastUpdatedTime     bytesWritten
Server1     04082015            2000
Server2     04072015            3000
到目前为止,我已经能够使用以下脚本查询节点和LastUpdateTime:

select
node, lastUpdatedTime
from domain_Client a
where lastUpdatedTime = (select max(lastUpdatedTime) from domain_Client b
where a.node = b.node
我被困在如何在脚本中包含字节的问题上

我是Sybase SQL的初学者,因此任何帮助都将不胜感激。多谢各位


那么现在我如何将BytesWrite合并到上面的现有脚本中呢?

在介绍解决方案之前。我假设
domain\u Client
中的每个记录在某种基础上在
domain\u Jobs
中都有一个隐式记录:每次在
domain\u Client
中插入一条记录时,另一条记录插入
domain\u Jobs
中,最后插入的记录显示在选择结果的顶部,否则就没有解决办法

我使用Oracle是因为SQLFIDLE中不支持Sybase数据库。 你可以用它作为灵感。请注意,我没有优化查询,所以您需要做一些调整

要想做你想做的事,你必须在
domain\u Client
domain\u Jobs
中有一个连接列。因此,我们将向表中添加一个新列(可能是您应该创建表的副本并对其进行修改)

然后创建两个序列:

Alter table domain_Client add join_col number;
Alter table domain_Jobs add join_col number;
更新两个表上的
join\u col
,如下所示:

update  domain_Client set join_col = cli_seq.nextval; 
update  domain_Jobs set join_col = cli_jobs.nextval; 
现在,我们可以在两个表之间进行连接,并获得结果:

SELECT vb.node,
   va.maxupdatetime,
   vb.bytesWritten
FROM
( SELECT node,
         max(LASTUPDATEDTIME) maxupdatetime
 FROM domain_Client
  GROUP BY node) va
INNER JOIN
( SELECT node,
   lastUpdatedTime,
   bytesWritten
 FROM domain_Client a
 INNER JOIN domain_JobArchive b ON a.LASTUPDATEDTIME = b.LASTUPDATEDTIME) vb      ON va.node = vb.node
 AND va.maxupdatetime = vb.lastUpdatedTime

这是

的链接,除非您的“域作业”表有更多列,否则我们也会被卡住!您应该有一个列引用键,可以用来链接这两个表。除非您有,否则我们无法将作业链接到写入的相应字节…Saagar,Gerrat,我添加了一个新表(domain_JobArchive),其中LastUpdateTime也存在于domain_Client中。感谢您的帮助。让我试试看。我已经更新了我的问题。你介意看一看并提出建议吗?
update  domain_Client set join_col = cli_seq.nextval; 
update  domain_Jobs set join_col = cli_jobs.nextval; 
SELECT vb.node,
   va.maxupdatetime,
   vb.bytesWritten
FROM
( SELECT node,
         max(LASTUPDATEDTIME) maxupdatetime
 FROM domain_Client
  GROUP BY node) va
INNER JOIN
( SELECT node,
   lastUpdatedTime,
   bytesWritten
 FROM domain_Client a
 INNER JOIN domain_JobArchive b ON a.LASTUPDATEDTIME = b.LASTUPDATEDTIME) vb      ON va.node = vb.node
 AND va.maxupdatetime = vb.lastUpdatedTime