DB2怎么通过select语句创建临时表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DB2怎么通过select语句创建临时表相关的知识,希望对你有一定的参考价值。
orlacle可以通过create table new_table_name as (select * from table_name)创建临时表,DB2怎么写代码可以实现和oracle相同的功能,麻烦写清楚点,我刚开始接触这东西
其实是可以的,用物化查询建表就可以:create table new_table_name as
(select a.serv_number,b.user_id
from table_name1 a,table_name2
where a.serv_number=b.serv_number);
data initially deferred refresh deferred;
refresh table new_table_name;
第一部分是建表结构,加上后面两句就可以把数据刷新进去了,只不过有个条件就是:table_name1 和 table_name2都不能是像这样物化查询建出来的表 参考技术A create table table_name like table_name
是不是比ORACLE简单点,哈哈追问
这个只是复制表结构,我想通过查询直接生成表及字段内容
追答create table new_table_name like old_table_name;
insert into new_table_name select * from old_table_name;
go;
只能两步操作来创建.
create table new_table_name as
(select a.serv_number,b.user_id
from table_name1 a,table_name2
where a.serv_number=b.serv_number)
这个orlacle可以做到,DB2能不能也根据表关联创建表呢
据我所知,在DB2里不行,只能通过先创建表结构,在导入表数据来解决!
本回答被提问者采纳SQL Server,临时表,SELECT 语句不起作用
【中文标题】SQL Server,临时表,SELECT 语句不起作用【英文标题】:SQL Server, temporary table, SELECT statement not working 【发布时间】:2021-12-29 21:17:55 【问题描述】:我正在尝试从我创建的临时表在 Azure Data Studio 中运行查询。但是,在我的 SELECT
语句中,它无法识别列名。 SELECT
语句中的列名(即FirstPlayer, SecondPlayer, Score
)带有红色下划线,查询返回为无效。
知道如何更改语法以使其运行吗?
IF OBJECT_ID('tempdb.dbo.#GameScores','U') IS NOT NULL
DROP TABLE #GameScores;
GO
CREATE TABLE #GameScores
(
FirstPlayer VARCHAR(10),
SecondPlayer VARCHAR(10),
Score INTEGER
);
GO
INSERT INTO #GameScores
VALUES ('Joe','Ryan', 120),
('Sue', 'Jackie', 200),
('Ryan', 'Sue', 50),
('Ryan', 'Joe', 100);
GO
SELECT DISTINCT
FirstPlayer,
SecondPlayer,
IF(Score = MAX(Score), MAX(Score) + 20, Score) AS Score
FROM
#GameScores
WHERE
SecondPlayer NOT LIKE "JO%"
OR Points <> 100
【问题讨论】:
没有if
,而是iif
,但更重要的是你应该转换聚合函数信息window functions,类似于max(score) over (partition by FirstPlayer, SecondPlayer)
。
MAX(Score)
指的是什么,最大行数?
【参考方案1】:
如果您在选择查询中有其他列,则需要使用 GROUP BY。
为了使您的查询正常工作,您必须先计算最大值(分数),然后将它们应用到 SELECT 查询中,如下所示。此外,您在表中没有积分列。我认为您指的是分数列。
DECLARE @max_Score INT = (SELECT max(score) from #GameScores)
SELECT
DISTINCT FirstPlayer,
SecondPlayer,
CASE WHEN Score = @max_Score THEN @max_Score+20 ELSE Score END AS Score
FROM #GameScores
WHERE SecondPlayer NOT LIKE 'JO%'
OR Score <> 100
FirstPlayer | SecondPlayer | Score |
---|---|---|
Joe | Ryan | 120 |
Ryan | Sue | 50 |
Sue | Jackie | 220 |
【讨论】:
以上是关于DB2怎么通过select语句创建临时表的主要内容,如果未能解决你的问题,请参考以下文章