当前位置:首页 » 编程语言 » sql多表合并日报表
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql多表合并日报表

发布时间: 2022-05-23 23:41:40

Ⅰ MS sql多表合并问题

全部重新写了一下,你先看这个能执行不
select id,name,a.199501,a.199502,a.199503,a.199504,a.199505,a.199506,a.199507,a.199508,a.199509,a.199510,a.199511,a.199512,
b.199601,b.199602,b.199603,b.199604,b.199605,b.199606,b.199607,b.199608,b.199609,b.199610,b.199611,b.199612,
c.199701,c.199702,c.199703,c.199704,c.199705,c.199706,c.199707,c.199708,c.199709,c.199710,c.199711,c.199712,
d.199801,d.199802,d.199803,d.199804,d.199805,d.199806,d.199807,d.199808,d.199809,d.199810,d.199811,d.199812,
e.199901,e.199902,e.199903,e.199904,e.199905,e.199906,e.199907,e.199908,e.199909,e.199910,e.199911,e.199912,
f.200001,f.200002,f.200003,f.200004,f.200005,f.200006,f.200007,f.200008,f.200009,f.200010,f.200011,f.200012,
g.200101,g.200102,g.200103,g.200104,g.200105,g.200106,g.200107,g.200108,g.200109,g.200110,g.200111,g.200112,
h.200201,h.200202,h.200203,h.200204,h.200205,h.200206,h.200207,h.200208,h.200209,h.200210,h.200211,h.200212,
i.200301,i.200302,i.200303,i.200304,i.200305,i.200306,i.200307,i.200308,i.200309,i.200310,i.200311,i.200312,
j.200401,j.200402,j.200403,j.200404,j.200405,j.200406,j.200407,j.200408,j.200409,j.200410,j.200411,j.200412
(select id,name,199501,199502,199503,199504,199505,199506,199507,199508,199509,199510,199511,199512 from 1995年表) a,
(select id,name,199601,199602,199603,199604,199605,199606,199607,199608,199609,199610,199611,199612 from 1996年表) b,
(select id,name,199701,199702,199703,199704,199705,199706,199707,199708,199709,199710,199711,199712 from 1997年表) c,
(select id,name,199801,199802,199803,199804,199805,199806,199807,199808,199809,199810,199811,199812 from 1998年表) d,
(select id,name,199901,199902,199903,199904,199905,199906,199907,199908,199909,199910,199911,199912 from 1999年表) e,
(select id,name,200001,200002,200003,200004,200005,200006,200007,200008,200009,200010,200011,200012 from 2000年表) f,
(select id,name,200101,200102,200103,200104,200105,200106,200107,200108,200109,200110,200111,200112 from 2001年表) g,
(select id,name,200201,200202,200203,200204,200205,200206,200207,200208,200209,200210,200211,200212 from 2002年表) h,
(select id,name,200301,200302,200303,200304,200305,200306,200307,200308,200309,200310,200311,200312 from 2003年表) i,
(select id,name,200401,200402,200403,200404,200405,200406,200407,200408,200409,200410,200411,200412 from 2004年表) j,
(select id from 1995年表 union all select id from 1996年表 union all select id from 1997年表 union all
select id from 1998年表 union all select id from 1999年表 union all select id from 2000年表 union all
select id from 2001年表 union all select id from 2002年表 union all select id from 2003年表 union all
select id from 2004年表) k
where k.id=a.id(+)
and k.id=b.id(+)
and k.id=c.id(+)
and k.id=d.id(+)
and k.id=e.id(+)
and k.id=f.id(+)
and k.id=g.id(+)
and k.id=h.id(+)
and k.id=i.id(+)
and k.id=j.id(+)

Ⅱ SQL 表如何两张表合并成一张 !!

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

Ⅲ SQL 多表 合并 sum

你的意思好像是要动态的SQL,因为你说条件的时间是选择的,选择的就决定子表是动态的。
如果动态的得用存储过程完成,输出一个结果。

CREATE OR REPLACE PROCEDURE pro_ext_sum(vd_begin in date,vd_end in date,vn_sum out number)IS
TYPE StringArray IS VARRAY(20) OF VARCHAR2(8);
vs_table StringArray ;
vs_sql varchar2(2000);
vd_date DATE;
vs_date varchar2(6);
i INTEGER;
j INTEGER;
TYPE REF_CUR IS REF CURSOR;
cur_row REF_CUR;

BEGIN
vs_sql := 'SELECT ';
vd_date := vd_begin;
vs_date := to_char(vd_date,'yyyymm');
i := 0;
--初始化数组
vs_table := StringArray();

WHILE vs_date <= to_char(vd_end,'yyyymm') LOOP
-- 计数器加1
i := i + 1;
-- 数组加1维
vs_table.extend();

vs_table(i) := vs_date;
vd_date := add_months(vd_date,1);
vs_date := to_char(vd_date,'yyyymm');

END LOOP;
FOR j IN 1..i LOOP
vs_sql := vs_sql||'(select sum(sl) from table'||vs_table(j)||') + ';
END LOOP;
vs_sql := substr(vs_sql,1,length(vs_sql) - 2);
vs_sql := vs_sql||'from al';
OPEN cur_row FOR vs_sql;
FETCH cur_row INTO vn_sum;
CLOSE cur_row;
END pro_ext_sum;

Ⅳ SQL多张表如何合并成一张报表

select a.*,b.*,c.* from table1 a,table2 b,table3 c where 关联性

select a.*,b.*,c.* from table1 a join table2 b on .... join table3 c on.....
省略的地方 自行补齐 每个表之间的联系

Ⅳ SQL求两张表如何合并。

先用左连接将1表完全查出,再用右连接将2表完全查出,最后合并结果

SELECT t1.id AS `编号`,t1.`name` AS `名称`,t1.score AS `科目一分数`,CASE WHEN t2.score IS NULL THEN 0 ELSE t2.score END AS `科目二分数`

FROM t1 LEFT JOIN t2 ON t1.id= t2.id

UNION

SELECT t2.id AS `编号`,t2.`name` AS `名称`,CASE WHEN t1.score IS NULL THEN 0 ELSE t1.score END AS `科目一分数`,t2.score AS `科目二分数`

FROM t1 RIGHT JOIN t2 ON t1.id= t2.id;

Ⅵ sql 表如何多表合并查询(可能有空值)

select a.id,b.val as chsvalue,c.val as mathvalue from student a
left join chs b on a.id=b.stid
left join math c on a.id=c.stid

Ⅶ SQL怎样合并两个表进行查询

selecttop10*from
(select*from表1
unionall
select*from表2)asT
orderby某字段

union all就是把俩表连接

然后把他俩连接的结果集起名叫T

然后你就可以用top了

你可以直接运行一下括号里那句,如果表结构相同你两个可以用*,如果部分字段相同,你就要把在一起的字段写到一起了,比如

selectid,namefrom表1
unionall
selectid,namefrom表2

类似这样

Ⅷ sql 两表合并汇总

我想楼主说的应该是这个意思:
select
字段1,字段2,sum(起初数量),sum(发生数据)
from
(
select
字段1,
字段2,
sum(起初数量)
as
起初数量,
0
as
发生数据
from
table1
group
by
字段1,字段2
union
select
字段1,
字段2,
0
as
起初数量,
sum(发生数据)
as
发生数据
from
table2
group
by
字段1,字段2
)
a
group
by
字段1,字段2
因为表里面不可能就一两条数据-_-

Ⅸ sql两个表数据合并到一个新表

SQL 数据库中的两个表的数据合并到一个新表中,首先需要create一个新的表,然后根据数据表结构insert两个表的数据到新表中即可完成两个表数据合并到一个新表。

Ⅹ sql怎么把两张表合并成一张

sql把两张表合并成一张步骤如下:

1、我们首先将以A为基准用leftjoin以B为基准用right,都要就用fulljoin 。