针对这些要求可能的sybase/ansi transact-sql查询

针对这些要求可能的sybase/ansi transact-sql查询,sql,tsql,sybase,Sql,Tsql,Sybase,我试图找出以下问题(对于sybase)的transact-sql,这是我的问题。鉴于以下表格和数据: 表:银行评级 | bank_name | agency | | BankA | Marvel | | BankA | Sullivan | | BankA | Fargo | | BankB | Marvel | | BankB | Fargo | 表:机构评级 | agency | rating | | Marvel | 1

我试图找出以下问题(对于sybase)的transact-sql,这是我的问题。鉴于以下表格和数据:

表:银行评级

| bank_name | agency   |
| BankA     | Marvel   |
| BankA     | Sullivan |
| BankA     | Fargo    |
| BankB     | Marvel   |
| BankB     | Fargo    |
表:机构评级

| agency | rating |
| Marvel | 1      |
| Short  | 1      |
| Fargo  | 2      |
我需要做以下工作

用数据填充新表(以下示例):

表:结果表

| bank_name | agency |
| BankA     | Marvel |
以便:

  • 我总是选择评级最低的机构
  • 如果两个机构的评级相同,则按字母顺序选择第一个机构
我正在努力解决的问题是如何选择评级最低的机构,但如果评级相同,那么就按字母顺序选择第一家

考虑到sybase的预期数据库,此问题的transact-sql是什么

谢谢你的帮助

谢谢。

试试这个:

Select * from
(
  select b.bank_name, a.agency,
  rank() over (partition by b.bank_name order by a.rating, b.agency) rnk
  from bank_rating b
  inner join agency_rating a on b.agency = a.agency
)
where rnk = 1
要创建新表,可以执行以下操作

Select bank_name, agency into result_table from
(
  select b.bank_name, a.agency,
  rank() over (partition by b.bank_name order by a.rating, b.agency) rnk
  from bank_rating b
  inner join agency_rating a on b.agency = a.agency
)
where rnk = 1
插入到现有表中的步骤

insert into result_table(bank_name, agency)
Select bank_name, agency from
(
  select b.bank_name, a.agency,
  rank() over (partition by b.bank_name order by a.rating, b.agency) rnk
  from bank_rating b
  inner join agency_rating a on b.agency = a.agency
)
where rnk = 1
不使用窗口功能:

select bank_name, a.agency
from bank_rating b
outer apply (select top 1 y.agency
             from  bank_rating y
             inner join agency_rating x on y.agency = x.agency
             where y.bank_name = b.bank_name
             order by x.rating, x.agency) a

什么版本的sybase?你可以使用窗口功能吗?@BlueFoots我还没有访问sybase的权限,但我正在尝试学习语法,所以我不知道。我必须在不同的数据库上进行本地测试。如果你愿意的话,两种选择对我都有帮助。谢谢。关于新结果表中的填充,只是插入结果表SELECT*FROM?谢谢出于好奇,不使用@bluefeet所指的窗口功能也能做到这一点吗?哇,答案非常全面。最后一个有很多东西要我学。有趣的是,你是如何从内部选择外部的。“top 1”和“外部应用”用法对我来说也是新用法。谢谢