I need to select only the first row from a query that joins tables A and B. On table B exist multiple records with same name. There are not identifiers in any of the two tab
The tag of this question indicates that it would be a solution for DB2, but this is very similar to MS-SQL server, if so try these solutions:
Using CROSS, it will be possible to display what exists only in both tables
select A.*, B.DATA1, B.DATA2
from A
cross apply (select top 1 * from B where B.name = A.name) B
But it is possible to change to OUTER to display what exists in A without the obligation to exist in B
select A.*, B.DATA1, B.DATA2
from A
OUTER apply (select top 1 * from B where B.name = A.name) B
In the structure of the apply statement, it would also be possible to include an ORDER statement, since there is no indication of the order of exits in table B