我可以在 SQL 中使用动态 FROM 子句吗?
Can I have dynamic FROM Clause in SQL?
我目前正在使用依赖于另一个参数的报告参数 值列表。
我想出了这个主意,有什么方法可以让它发挥作用吗?
WITH A AS (
SELECT DISTINCT columnA1 FROM Table1
UNION SELECT DISTINCT columnA2 FROM Table1
UNION SELECT DISTINCT columnA3 FROM Table1)
WITH B AS (SELECT DISTINCT columnB1 FROM Table1
UNION SELECT DISTINCT columnB2 FROM Table1
UNION SELECT DISTINCT columnB3 FROM Table1)
Select * from CASE WHEN (:PM_Parameter1 = 'A')
THEN A
ELSE B
END;
假设这是 Oracle SQL,您可以使用 EXISTS 函数检查参数值,然后使用 UNION 组合集合。
试试这个 SQL:
select * from
(
select 'A' from dual
union
select 'B' from dual
)
where exists
(SELECT 'Y'
FROM dual
where 'parameter' = 'parameter'
)
union
select * from
(
select 'X' from dual
union
select 'Y' from dual
)
where exists
(SELECT 'Y'
FROM dual
where 'parameter' != 'parameter'
)
如果您反转条件 'parameter' = 'parameter'
和 'parameter' != 'parameter'
,它将 return 两个不同的行集。
我相信这可以再次优化,希望它对你有用。
我目前正在使用依赖于另一个参数的报告参数 值列表。 我想出了这个主意,有什么方法可以让它发挥作用吗?
WITH A AS (
SELECT DISTINCT columnA1 FROM Table1
UNION SELECT DISTINCT columnA2 FROM Table1
UNION SELECT DISTINCT columnA3 FROM Table1)
WITH B AS (SELECT DISTINCT columnB1 FROM Table1
UNION SELECT DISTINCT columnB2 FROM Table1
UNION SELECT DISTINCT columnB3 FROM Table1)
Select * from CASE WHEN (:PM_Parameter1 = 'A')
THEN A
ELSE B
END;
假设这是 Oracle SQL,您可以使用 EXISTS 函数检查参数值,然后使用 UNION 组合集合。
试试这个 SQL:
select * from
(
select 'A' from dual
union
select 'B' from dual
)
where exists
(SELECT 'Y'
FROM dual
where 'parameter' = 'parameter'
)
union
select * from
(
select 'X' from dual
union
select 'Y' from dual
)
where exists
(SELECT 'Y'
FROM dual
where 'parameter' != 'parameter'
)
如果您反转条件 'parameter' = 'parameter'
和 'parameter' != 'parameter'
,它将 return 两个不同的行集。
我相信这可以再次优化,希望它对你有用。