po_saa Ответов: 1

Динамическое объявление условия фильтра перед группировкой результатов


Пожалуйста предложите

есть такая функция

проблема заключается в том, чтобы динамическое объявление условия WHERE перед группой
и разместить этот запрос на стороне сервера, например TVF или View

..или это может быть реализовано с помощью какого-то другого лучшего подхода?

SELECT        lt.PNPart, mg.PartNumber
FROM            LinkTable AS lt INNER JOIN
                         mfu AS mg ON lt.PNPart = mg.PartNumber
where PrintColorMono =2 or PrintSpeedA4Simplex = 25 or PrintResolutionMax = 5 or DevicePosition = 2 or Manufacturer = 1
GROUP BY lt.PNPart, mg.PartNumber

What I have tried:

T-SQL documentation, MSDN, Forums

1 Ответов

Рейтинг:
2

MadMyche

Самый быстрый способ-использовать хранимую процедуру и передать параметр(переменную), чтобы указать процедуре, какой запрос выполнить через IF заявления.

CREATE PROCEDURE dbo.MySProc
(@QueryOption INT) 
AS
BEGIN
  IF (@QueryOption = 1) BEGIN
    -- TSQL to execute for selected option
  END
  ELSE IF (@QueryOption = 2) BEGIN
    -- TSQL to execute for selected option
  END
  -- and so on
END
GO


Затем вы вызовете эту хранимую процедуру с параметром, сообщающим вам, какой оператор вы хотите запустить
EXECUTE dbo.MySProc @QueryOption =1


po_saa

Привет!
Вместо этого я попробовал TVF
Но проблема все еще сохраняется - "где" не принимает параметр