Как использовать многозначный параметр с выражением CASE в SSRS? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь использовать выражение case, чтобы пометить, какие записи имеют любой из идентификаторов, перечисленных в моем параметре. Мой код примерно такой:

SELECT 
TRANSACTION_ID,
CASE WHEN CUSTOMER_ID IN (@PARAMETER) THEN 1 ELSE 0 END AS CUSTOMER_CLASS

Это прекрасно работает, если я использую только одно значение, когда запрашивается параметр, но если я ставлю более одного, я получаю: Выражение не булева типа, указанное в контексте, где ожидается условие, рядом с ',' .

Я пытался сделать это несколькими способами, включая обработку параметра, как будто это строка, разделенная запятыми, и попытка разобрать подстроку. Я не могу понять, как этот параметр передается, но у меня продолжают появляться проблемы.

Я в конце. Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018
case when [ReturnedBy] IN (SELECT Split FROM [dbo].[ufn_Split](@param_1, ',')) then 1 else 0 end
0 голосов
/ 02 ноября 2018

Согласно вашему требованию, вы должны перейти на динамический запрос. Ниже код работает отлично.

        Declare  @sql varchar(max), 
                 @PARAMETER varchar(100) = '1,2,3,4' //For ex
        set @sql = 
            'SELECT 
            TRANSACTION_ID,
            CASE WHEN CUSTOMER_ID IN ('+@PARAMETER+') THEN 1 ELSE 0 END AS CUSTOMER_CLASS'; 
Execute(@sql)
...