2014-12-02 105 views
0

我在存儲過程中的以下查詢正道減去

DECLARE @I INT 
DECLARE @TenPercent int 
DECLARE @RowsCount int 

SET @TenPercent =10 
SET @I = 1 

SELECT 
    @I, dbo.tblVegetationType.VegTypeCode, dbo.tblVegetationType.VegTypeName 
FROM 
    dbo.tblVegetationType 
INNER JOIN 
    dbo.tblVegTypeVegFormationLink ON dbo.tblVegetationType.VegTypeID = dbo.tblVegTypeVegFormationLink.VegTypeID 
INNER JOIN 
    tblCMAVegTypeLink ON dbo.tblVegetationType.VegTypeID = dbo.tblCMAVegTypeLink.VegTypeID 
WHERE 
    dbo.tblVegetationType.PercentageCleared >= (@PercentCleared - @TenPercent) 
    AND dbo.tblVegTypeVegFormationLink.VegetationFormationID = @VegetationFormationID 
    AND dbo.tblCMAVegTypeLink.CMAID = @CMAID 

我有以下條件

dbo.tblVegetationType.PercentageCleared >= (@PercentCleared - @TenPercent) 

什麼我想在這裏做的:如果PercentCleared是60 %然後我想查詢從50%選擇列表。

所以我只需加上SET @TenPercent = 10並從條件中減去。

這是一個正確的方法嗎?

+2

我沒有看到'@ PercentCleared'任何聲明? – Raj 2014-12-02 05:04:43

+1

+ Usher沒關係,你應該看看你是否得到正確的結果,以及Raj提到@PercentCleared變量是否丟失。 – 2014-12-02 05:26:48

+0

這是一個表演相關的問題? – 2014-12-02 06:26:58

回答

1

編寫查詢可以是另一種方式:

SELECT @I, 
     VT.VegTypeCode, 
     VT.VegTypeName 
FROM dbo.tblVegetationType VT 
INNER JOIN dbo.tblVegTypeVegFormationLink VTVF 
ON VT.VegTypeID = VTVF.VegTypeID 
INNER JOIN tblCMAVegTypeLink CVT 
ON VT.VegTypeID = CVT.VegTypeID 
WHERE 1= case when @PercentCleared >= 60 and VT.PercentageCleared <= 50 then 1 
-- you can add condition when @PercentCleared < 60 then what values of 
-- VT.PercentageCleared are to be considered 
     when @PercentCleared < 60 and VT.PercentageCleared <= 50 then 1 
     end 
AND VTVF.VegetationFormationID = @VegetationFormationID 
AND CVT.CMAID = @CMAID