Передача параметра SSRS в Query в качестве параметра - PullRequest
0 голосов
/ 03 апреля 2019

В последнее время в SSRS существует одна ситуация, когда я не могу определить правильную логику для моего требования, может кто-нибудь, пожалуйста, помогите мне разобраться в чем проблема в моей логике.

Я пытаюсьпередать значение параметра в запрос набора данных SSRS.Пожалуйста, обратитесь к запросу ниже.Когда я пытаюсь выполнить запрос вручную, он запускается, но когда я передаю параметр в нем, не предоставляя мне желаемый результат, обратитесь к скриншоту, где я выполнил запрос в SSMS.

DataSet Query


Select * from(
SELECT     @Defaulter_Type AS Priority_Count, Priority
FROM         Quality_Portal_Data_Fact_Graph)  temp

SQL-запрос


SELECT [NEW_PID_2],[Priority_1] 
  FROM [OneWindowPRD].[dbo].[Quality_Portal_Data_Fact_Graph]

Хотя, я понимаю, что когда я пытаюсь передать в него параметр, я могу понять одну вещь.Он передает значение с помощью единственной корты, из-за чего он показывает данные ниже указанной формы.

output of the query when I pass parameter

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

Я уже пытался SUBSTRING, он не работает.Пожалуйста, смотрите скриншот

ВЫБЕРИТЕ КВОТНОЕ ИМЯ (SUBSTRING (@Defaulter_Type, 2, LEN (@Defaulter_Type) - 2)) AS Количество_приоритет ОТ Качество_Портал_Data_Fact_Graph

enter image description here

enter image description here

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Если вам нужно значение параметра в наборе данных, но оно не используется в качестве параметра в предложении Where, тогда оно не требуется в наборе данных SQL, просто добавьте его в качестве дополнительного столбца в SSRS отчет. Однако, если он вам нужен как параметр, вы можете указать его как @Defaulter_Type в предложении WHERE. [Новое дополнение для ясности) @ Arpit-Шарма Боюсь, мне неясно, чего вы пытаетесь достичь. Можете ли вы попробовать что-то базовое, как это в серверной части (SSMS):

Declare @Pid2 VarChar(10)
Set @NewPid = '0'

SELECT
    [Priority_1]
    ,[New_PID_2]
    ,[Project_Ending_3]
    ,[PSU_Status_4]
    ,[Project_Profile_5]
    ,[eUPP_Status_6]
    ,[iPMS_Setup_7]
    ,[PM_EO_8]
FROM [OneWindowPRD].[dbo].[Quality_Portal_Data_Fact_Graph]
WHERE [New_PID_2] = @NewPid

Столбец PID выглядит как то, что вы пытаетесь отфильтровать, и, если это так, приведенный выше SQL должен это сделать, при условии допустимого значения в переменной.

0 голосов
/ 03 апреля 2019

Вы пытаетесь сделать что-то вроде:

DECLARE @sql varchar(1000) =
'
Select * from(
SELECT     ' + QUOTENAME(@Defaulter_Type) + ' AS Priority_Count, Priority
FROM         Quality_Portal_Data_Fact_Graph)  temp
'

EXEC (@sql)

При этом используется динамический SQL для построения строки запроса с использованием вашего параметра в качестве имени столбца.Затем он выполняет этот запрос для получения вашего результирующего набора.

Ваш текущий запрос просто выберет значение @Defaulter_Type в качестве значения поля Priority_Count для каждой строки.

Кроме того, если ваш параметр заключен в кавычки, которые вы хотите удалить, используйте:

DECLARE @sql varchar(1000) =
'
Select * from(
SELECT     ' + QUOTENAME(SUBSTRING(@Defaulter_Type, 2, LEN(@Defaulter_Type) - 2)) + ' AS Priority_Count, Priority
FROM         Quality_Portal_Data_Fact_Graph)  temp
'

EXEC (@sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...