0

@UserRoleId = 4 の場合はアイテムを検索に含める条件を WHERE 句に追加する必要があり、それ以外の場合は検索から除外します (SQL Server)。

INSERT INTO @partData
(
  PartPrefix,
  PartNumber,
  MyProDescription,
  ItemNumber,
  PartType,
  Side,
  VehicleLocation,
  MyProPrice
)
SELECT
  CASE
    WHEN LEFT(myParts.MyProDescription, 4) = 'FOIL' THEN 'FOIL'
    ELSE LEFT(myParts.PartNumber, 3)
  END,
  PartNumber,
  MyProDescription,
  ItemNumber,
  PartType,
  Side,
  VehicleLocation,
  MyProPrice  
FROM 
  MyProExport myParts
WHERE
  @year BETWEEN myParts.YearFrom AND myParts.YearTo AND
  myParts.CarMake = @make AND 
  REPLACE(myParts.CarModel, ' ', '') = REPLACE(@model, ' ', '') AND
  (
    myParts.EngineDisplacement = @engine OR 
    myParts.EngineDisplacement = 'ALL'
  ) AND
  LEFT(myParts.PartNumber, 3) NOT IN ('300','400') -- Exclude these parts if not @UserRoleId = 4

最後のステートメントは、@UserRoleId = 4 の場合にのみ 300 と 400 を表示するように変更する必要があります。私はもう試した:

CASE
  WHEN @UserRoleId = 4 THEN LEFT(myParts.Number, 3) NOT IN ('300','400') -- Exclude parts

運悪く…

4

1 に答える 1

1

case ステートメントの代わりに、AND/OR ロジックを使用してください。

AND (LEFT(myParts.HollanderNumber, 3) = '300'
OR (@UserRoleID = 4 AND LEFT(myParts.HollanderNumber, 3) = '400'))

これは常に 300 を表示し、@UserRoleID = 4

于 2013-02-25T16:45:07.133 に答える