Sql sybase For循环,包括对从select语句获得的每个结果的查询

Sql sybase For循环,包括对从select语句获得的每个结果的查询,sql,sybase,sap-ase,Sql,Sybase,Sap Ase,根据此查询的输出,它返回许多客户帐号。我正在尝试执行一个select查询,返回每个帐号的top 1。我计划在第二个sql中链接第一个查询的o/p,比如a.acct_num=(第一个查询的输出)。我希望在循环中执行此操作,并为每个帐号选择前1名。任何关于如何继续的帮助都将不胜感激是光标使用的好地方: SELECT distinct(a.acct_num) FROM customer_acct a, customer_acct_history b LIKE "%000%" WHERE a.a

根据此查询的输出,它返回许多客户帐号。我正在尝试执行一个select查询,返回每个帐号的top 1。我计划在第二个sql中链接第一个查询的o/p,比如a.acct_num=(第一个查询的输出)。我希望在循环中执行此操作,并为每个帐号选择前1名。任何关于如何继续的帮助都将不胜感激

是光标使用的好地方:

SELECT distinct(a.acct_num)
FROM customer_acct a,
customer_acct_history b LIKE "%000%"    
WHERE a.acct_num *= b.acct_num AND acct_type='C'

德国劳埃德船级社

我们可以单独使用循环来实现这一点吗?因为游标带来了性能问题:)您可以始终使用原始的select进行连接。这将是最快、最优雅的解决方案。你能写一点关于如何使用连接的代码片段或语法吗?继续下去对我会有帮助的
declare curs cursor
for 
SELECT distinct(a.acct_num)
FROM customer_acct a,
customer_acct_history b LIKE "%000%"    
WHERE a.acct_num *= b.acct_num AND acct_type='C'

OPEN curs 

DECLARE @acct_num INT

fetch curs into @acct_num

/* now loop, processing all the rows
** @@sqlstatus = 0 means successful fetch
** @@sqlstatus = 1 means error on previous fetch
** @@sqlstatus = 2 means end of result set reached
*/
while (@@sqlstatus != 2)
BEGIN
   SELECT Sometning FROM somwhere where @acct_num = ...
   fetch curs into @acct_num
END