问题描述
我有一个获取数字1到10的查询。此查询正在SSRS报告中使用,以过滤出更大的数据集。
我想知道我们将如何获得“全部”-参数属性选项中有一个“允许多个值”选项,但我认为这只是将数字连接在一起,所以将(1,2,3等),因此我不确定Oracle是否可以处理。
我的查询以获得ContractTypes -1至10:
WITH ContractTypes (ContractType) AS (
SELECT -1 FROM dual
UNION ALL
SELECT ContractType+1
FROM ContractType
WHERE ContractType< 10)
SELECT *
FROM ContractTypes
我的查询以在另一个数据集中获取contractTypes。我不确定是否需要更改此值以拆分字符串以处理多个值。我正在使用-1处理null。
SELECT *
FROM Employee
WHERE contract_type NVL(CONTRACT_TYPE,-1) = :contract_type
我正在使用Visual Studio 2008为我的oracle代码构建报表和pl / sql开发人员。
非常感谢您的帮助:)
解决方法
在使用整数处理ALL时,我通常对ALL使用0来保持简单。
SELECT *
FROM Employee
WHERE (
contract_type NVL(CONTRACT_TYPE,-1) = :contract_type
OR :contract_type = 0
)
如果您不希望使用NULL,则需要将OR更改为
SELECT *
FROM Employee
WHERE (
contract_type NVL(CONTRACT_TYPE,-1) = :contract_type
OR (CONTRACT_TYPE IS NOT NULL AND :contract_type = 0)
)
,
这是我的工作;创建第二列,分别将NULL
和ALL
添加到-1和-2。然后,将SSRS中的DisplayFigure
列用于过滤器。
SELECT
ContractType,CASE WHEN ContractType = -2 THEN 'All'
WHEN ContractType = -1 THEN'Null'
ELSE to_Char(ContractType)
END AS DisplayFigure
FROM ContractTypes