SQL 左连接案例语句

SQL left join case statement

需要一些帮助来计算 SQL。不幸的是,tsql 的版本是 SybaseASE,我不太熟悉,在 MS SQL 中,我会在子查询中使用 RANK() 或 ROW_NUMBER() 之类的窗口函数并加入这些结果。 ..

这是我要解决的问题

TABLE A  
Id    
1  
2  
3

TABLE B  
Id,Type  
1,A  
1,B  
1,C  
2,A  
2,B  
3,A  
3,C    
4,B
4,C  

我想 return 每个 ID 1 行,如果 ID 有一个应该显示的类型 'A' 记录,如果它有不同的类型那么没关系,但它不能为空(可以做一些任意排序,比如 alpha 优先 "other" return 值类型)

Results:
1, A
2, A
3, A
4, B

常规左连接(在 A.id = B.id 和 B.type = 'A' 上)几乎 return 是我正在寻找的东西 returns null 当我想要 'next available' 类型时。

您可以在子查询 (FirstTypeResult) 上使用 INNER JOIN,这将 return 每个 ID 的最小类型。 例如:

SELECT TABLEA.[Id], FirstTypeResult.[Type]
FROM TABLEA 
JOIN (
   SELECT [Id], Min([Type]) As [Type] 
   FROM TABLEB
   GROUP BY [Id]
) FirstTypeResult ON FirstTypeResult.[Id] = TABLEA.[Id]