2013-07-04 3 views
3

В моей таблице San_Imovel у меня много свойств, и я хотел бы знать, есть ли какие-то дубликаты (свойство в том же адресе). Итак, я получаю адрес, который, как я уверен, обладает многими свойствами по этому же адресу, но в моем CASE WHEN EXIST возвращается 0.CASE КОГДА EXIST возвращает 0, когда должен возвращаться 1

Может ли кто-нибудь мне помочь?

В операторе SELECT внутри моего CASE WHEN EXITS верните 47 строк, если я запустил его в одиночку.

QUERY

declare @cityName as varchar(100) 
declare @neighborName as varchar(100) 
declare @zipcode as varchar(8) 
declare @complement as varchar(100) 
declare @street as varchar(100) 
declare @number as varchar(6) 
set @cityName = 'Sao Paulo' 
set @neighborName = 'Tupi' 
set @zipcode = '31840050' 
set @complement = '123' 
set @street = 'Furquim werneck' 
set @number = '5989828' 
;WITH cte 
AS (
    SELECT City_Id, State_Id, CityName 
    FROM City 
    WHERE (CityName COLLATE SQL_Latin1_General_CP1_CI_AI) LIKE '' + @cityName + '' 
) 
select 
CASE 
WHEN EXISTS (
     SELECT San_Imovel.Imovel_Id 
     FROM San_Imovel 
     WHERE San_Imovel.Number = @number 
     AND San_Imovel.ZipCode = @zipcode 
     AND San_Imovel.Complement = @complement 
     AND San_Imovel.Street = @street 
     AND San_Imovel.City_Id = cte.City_Id 
    ) 
    THEN 1 
    ELSE 0 
END AS ExistDuplicate 
from cte 

ДАННЫЕ ОБРАЗЦА

Imovel_Id bigint 
Number int 
Complement varchar 
Street varchar 
City_Id int 
Zipcode varchar 

Imovel_Id  Number Complement Street   City_Id ZipCode 
433669  5989828 123   Furquim Werneck 2754  31840050 
433670  5989828 123   Furquim Werneck 2754  31840050 
433671  5989828 123   Furquim Werneck 2754  31840050 
+0

Как выглядят данные в таблицах? – DoctorMick

+0

Ваш запрос верен, я уверен, ваш звонок не является. Тройная проверка значений, на которые установлены параметры. – Serge

+0

Должны ли вы использовать 'N'''-строки и' nvarchar' в некоторых местах? –

ответ

3

Вы должны передать свой параметр "число" как целое число, если это его тип данных в БД.

declare @number as int 
set @number = 5989828 
Смежные вопросы