我有一个查询,它获取数字1到10。SSRS报告中使用此查询来筛选较大的数据集。
我想知道我们将如何获得"ALL"-在参数属性选项中有一个"允许多个值"选项,但我认为这只是将数字连接在一起,所以会是(1,2,3等(,因此我不确定Oracle能否处理此问题。
我的查询以获得合同类型-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
我正在使用visualstudio2008为我的oracle代码构建我的报告和pl/sql开发人员。
提前感谢大家的帮助:(
当使用整数处理ALL时,我通常使用0表示ALL以保持简单。
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