【发布时间】:2020-09-12 06:15:47
【问题描述】:
我有一个查询,它的 contract_types 为 1 到 10。此查询在 SSRS 报告中用于过滤出更大的数据集。我使用 -1 表示空值,使用 -2 表示所有值。
我想知道我们如何允许多个值 - oracle 是否将输入连接在一起以便传入“1,2,3”?假设我们在 SSRS 中选择 -1,0,1,我们如何更改底部查询以返回值?
我获取 ContractTypes 的查询:
SELECT
ContractType,
CASE WHEN ContractType = -2 THEN 'All'
WHEN ContractType = -1 THEN'Null'
ELSE to_Char(ContractType)
END AS DisplayFigure
FROM ContractTypes
返回
ContractType DisplayFig
-1 Null
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
这目前只返回单个值或全部,而不是多个值:
SELECT *
FROM Employee
WHERE NVL(CONTRACT_TYPE, -1) = :contract_type or :contract_type = -2
我假设我们想做这样的事情:
WHERE NVL(CONTRACT_TYPE, -1) IN (:contract_type)
但这似乎不起作用。
员工数据
Name ContractType
Bob 1
Sue 0
Bill Null
Joe 2
在我的报告中,我希望能够使用“允许多个值”复选框将 contract_type 选择为 -1(null),0,1。目前,我只能使用我的 -2 值选择“全部”或单一合同类型。
我的输入是:合约类型 = -1,1,2
我的输出将是 Bill、Bob、Joe。
【问题讨论】:
-
所问的内容需要更清楚。我不明白你的输入是什么,输出到底是什么。请包含示例数据并说明您希望将其作为输入的输出看到什么。
-
好的,绑定变量的数据类型是什么,即 :ContractType ?我提供的代码期望它是 varchar2。
-
在 SSRS 中它是一个文本字段,在 pl/sql developer 中它是一个字符串
-
我不确定 SSRS。我从来没有在这方面工作过。如果它是一个字符串,那么我的代码应该可以工作。请复制并粘贴我的代码并在 SQL Developer 上运行它。然后提供不同的输入,你会看到它会起作用。
标签: oracle reporting-services ssrs-2008