當前位置:首頁 » 編程語言 » 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 。