2013-04-11 3 views
1

크리스탈 내에서 수행 할 수 있는지 확실하지 않지만 여기에 설명되어 있습니다.두 개의 쿼리 Sql 식

이 보고서에 대한 추가 보고서 정보를 얻는 데 필요한 두 가지 값이 있습니다. 먼저 판매 단위를 찾는 것입니다 ... 두 번째는보고를위한 적절한 최종 가격을 찾는 것입니다. 초기 생각은 SQL 식 내의 변수에 쿼리를 할당하여 첫 번째 값을 가져 와서 두 번째 ...하지만 내 변수를 좋아하지 않아.

CASE WHEN "Items"."ItemId" IS NULL THEN NULL 
ELSE 
    LOCAL NumberVar totalSold :=(SELECT SUM([QuantitySold]) AS TotalSold 
        FROM Skus 
        WHERE Skus.ItemId = "Items"."ItemId" 
        AND Skus.SkuEnabled = 1); 

    SELECT TOP 1 Price 
    FROM [MYDB].[dbo].[PriceTables] p 
    WHERE p.UnitsSoldBreak >= totalSold 
     AND p.ItemId = "Items"."ItemId" 
    ORDER BY p.UnitsSoldBreak asc 

END 

기본적으로 항목은 가격에 대한 다수의 최종 계층을 가지고 있으며, 이러한 쿼리는 나에게 최종 가격이 판매되었다 얼마나 많은에 따라 있었는지 볼 수 있습니다. 쿼리는 SQL Management Studio에서 정상적으로 작동하며 최종 가격 (단일 번호)을 표시하는 식으로 마이그레이션하는 방법을 파악해야합니다.

엔진이 로컬 변수 선언에서 기침하고 있습니다.

답변

2

변수 대신 하위 쿼리를 사용할 수 있습니다. 이 같은 것을 시도해보십시오 :

CASE WHEN "Items"."ItemId" IS NULL THEN NULL 
ELSE 

    SELECT TOP 1 Price 
    FROM [MYDB].[dbo].[PriceTables] p 
    WHERE p.UnitsSoldBreak >= (SELECT SUM([QuantitySold]) 
       FROM Skus 
       WHERE Skus.ItemId = "Items"."ItemId" 
        AND Skus.SkuEnabled = 1) 
     AND p.ItemId = "Items"."ItemId" 
    ORDER BY p.UnitsSoldBreak asc 

END 
+0

조금 더 게임을해야했지만 이것이 올바른 방향으로 나를 도왔습니다 ... 감사합니다 쉐인! –

+0

다행스럽게도 도움이되었습니다. 완전히 분류하면 다음 가난한 영혼을 돕기 위해 최종 솔루션으로 질문을 업데이트 할 수 있습니다. – ShaneBlake