我正在寻找一些数据,但数据没有一行。我应该在没有在表中创建一行的情况下这样做,所以有没有办法只为我正在使用的查询而不是主表创建一行?我没有权限在表上创建行。
这是我想要使用的数据。我通过在一些现有数据上使用公式得到它。
Select <Columns>
From<Table>
left join (select sum(case when number = '440' then amount end)
/sum(case when number ='430' then amount end) GP from <table>)
on <relations>
我需要在其中一列中使用它。我想创建一个只在此查询中处于活动状态的小小行,并且不会出现在主数据库中。我没有权限编辑主数据库。我可以在此查询中创建它吗?
有可能吗? 如果不可能,请通过答案告诉我,这将结束问题。
答案 0 :(得分:1)
您可以使用common table expression
制作一个虚拟表格,其中包含您选择的其他行,用于select
。
例如,创建真实表:
create user foo login;
create table dont_touch ( x text);
insert into dont_touch values ('one fish'),('two fish'), ('red fish');
revoke all on dont_touch from foo;
grant select on dont_touch to foo ;
然后登录为&#34; foo&#34;并做:
with t as (select * from dont_touch union all select 'blue fish')
select * from t;
但是,对此t
的查询可能无法从基础实际表中存在的索引中受益,因此查询可能会慢得多。
答案 1 :(得分:1)
我不确定这是否是你想要的(我需要更多细节来理解这个问题),但你可以轻松地添加UNION ALL的行,例如:
SELECT numberOfThings,
TypeOfThings
FROM thingsTable tt
UNION ALL
SELECT 24, 'Fake Type of Things'
这样,这只会在您的查询中,而不在数据库中。 (您可以在子查询中使用它)
如果这有帮助您可以进一步阅读有关组合查询here。
的信息