La subconsulta devolvió más de 1 valor. Esto no está permitido cuando la subconsulta sigue a =,! =, <, <=,>,> = O cuando la subconsulta se usa como una expresión

Tengo un procedimiento almacenado queselect * from book table , usando sub consulta mi consulta es

USE [library]
GO

/****** Object:  StoredProcedure [dbo].[report_r_and_l]    Script Date: 04/17/2013 12:42:39 ******/

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[report_r_and_l]
@fdate date,
@tdate date,
@key varchar(1)
as

if(@key='r')

    select * 
    from dbo.books 
    where isbn =(select isbn from dbo.lending where (act between @fdate and @tdate) and (stat ='close'))

else if(@key='l')

    select * 
    from dbo.books 
    where isbn =(select isbn from dbo.lending where lended_date between @fdate and @tdate)

Sé que la sub consulta es devolver más de una consulta a la consulta principal, pero no sé cómo evitar este error, ¿puede alguien ayudarme?

Respuestas a la pregunta(3)

Su respuesta a la pregunta