어떻게 다음 T-SQL 문을 사용할 수 있습니까? 모든 CASE 옵션에 대해 @Type 변수를 설정하는 하위 쿼리를 복사 할 수 있지만 하위 쿼리는 한 번만 실행합니다. 가능한가?동일한 SELECT 문에서 비교를 위해 SQL 변수를 사용하십시오.
SELECT
@Type = (SELECT CustomerType FROM dbo.Customers WHERE CustomerId = (SELECT CustomerId FROM dbo.CustomerCategories WHERE CatId= @CatId)),
CASE
WHEN @Type = 'Consumer'THEN dbo.Products.FriendlyName
WHEN @Type = 'Company' THEN dbo.Products.BusinessName
WHEN @Type IS NULL THEN dbo.Products.FriendlyName
WHEN @Type = '' THEN dbo.Products.FriendlyName
END Product,
...
FROM
Products
INNER JOIN
Category
...
편집는 : D가 확인합니다 : 내 예를 들어 지금 실행 ... 돌아 내일 ... 짧은을 서명 미안 가지고 있지만 아이들을 데리러 ... 더 구체적으로 수정 내일 다시. 고마워!!
명확화 : 하위 쿼리의 where-clasue에서 기본 쿼리의 join stmt에 사용 된 테이블의 열을 참조해야합니다. 분리하면 @Type이 관련성을 잃을 것입니다.
당신은 더 구체적으로해야합니다의 일환으로 변수를 반환합니다. –
당신은 여전히 너무 애매합니다. 어떻게해야한다고 생각하는지 알려주지 않고 무엇을해야하는지 알려주세요. 쿼리와 변수가 작동하는 방식에 대한 근본적인 누락 된 링크가 있다고 생각합니다. 그러나 샘플 데이터와 원하는 결과를 보여 주면 우리는 꽤 똑똑한 사람들이며 당신이 원하는 것을 성취 할 수있는 방법을 찾아 낼 수 있습니다. –
사용중인 SQL Server 버전을 지정하는 경우에도 유용합니다! –