表結構應該是
ID
姓名
上代ID
代數
看你資料庫像是SQL2000,若是想簡單可以用表值函數來做這個查詢,會更簡單
,若是SQL2005,就能簡單的使用CTE語句實現
② 【緊急】求SQL語句:已知parentID層級關系,求生成層級編碼的語句
你是想根據父級ParenID 查詢它的下級嗎? 是只是它的第一層下級還是還包括下級的下級呢?
如果只要第一層的下級的話 where code like '01010[1-9]' or code like '0101[1-9]%' 0101是你知道的父級ParenIDID 這樣寫是因為如果你的下級個數大於100個的情況 如何你下級在 100個以內 則只需要這樣寫 where code like '0101[0-9][0-9]' 如果你要所以下級則更簡單了 直接就是 where code like '0101[0-9]%' 這里之所以不寫成 '0101%'這樣 是因為如過寫成這樣 父級本身這條數據也會被查詢出來。這應該就是你的想要的吧。
③ 有層級的,怎麼用sql查詢返回結果
樹形結構的查詢。
你需要說明一下, 你的資料庫是什麼資料庫。
Oracle 使用 START WITH CONNECT BY 語句實現樹狀查詢
DB2 與 MySQL 使用 CTE 遞歸處理來實現。
④ SQL的層次結構
sql環境包括目錄1至目錄N,目錄又包括信息模式和模式1至模式2,模式還包括11個模式對象。
⑤ 層級關系的sql語句該怎麼寫
oracle 的group by rollup應該可以的吧,樣得到結果集
是有層級關系。
⑥ 如何通過SQL語句實現數據的層次匯總
這個就需要從最底成開始迴圈計算了
create proc aa
as
declare @a int
set @a= distinct b from table
if (select len(b) from table where @a=b)=3
begin
select t1.b , t1.c from into #a from table t1,table t2 where substring(t1.b,1,2) =substring(t2.b,1,2) and len(t1.b)=3 and t1.b=t2.b
update set t1 set t1. c=sum( t2.c) from table t1, #a t2 where substring(t2.b,1,2) =t1.b
end
else
begin
select t1.b , t1.c from into #a from table t1,table t2 where substring(t1.b,1,1) =substring(t2.b,1,1) and len(t1.b)=3 and t1.b=t2.b
update set t1 set t1. c=sum( t2.c) from table t1, #a t2 where substring(t2.b,1,1) =t1.b
end
⑦ SQL樹形層級查詢
你好的!
oracle 的start with connect by
別的資料庫用cte 遞歸都能達到你要的效果!
望採納~
⑧ sql語句顯示層級
declare @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001',NULL ,'山東省'
UNION ALL SELECT '002','001','煙台市'
UNION ALL SELECT '004','002','招遠市'
UNION ALL SELECT '003','001','青島市'
UNION ALL SELECT '005',NULL ,'四會市'
UNION ALL SELECT '006','005','清遠市'
UNION ALL SELECT '007','006','小分市'
;with cte as
(
select ID,name,level=0 from @t where PID is null
union all
select p.id,p.name ,level=level+1 from @t p join cte c on p.PID = c.ID
)
SELECT SPACE(Level*2)+''+Name
FROM cte
ORDER BY id
/*
山東省
煙台市
青島市
招遠市
四會市
清遠市
小分市
(7 行受影響)*/
⑨ SQL要怎麼寫才能把 按員工查出他所在部門所有層級關系 。
WITHB1AS(
SELECT部門名稱,部門名稱一級部門,''二級部門,''三級部門,''四級部門,''五級部門FROM部門表WHERE層級=0),
B2AS(
SELECTB.部門名稱,B1.一級部門,B.部門名稱二級部門,''三級部門,''四級部門,''五級部門FROMB1JOIN部門表BONB.上級部門ID=B1.部門名稱WHEREB.層級=1),
B3AS(
SELECTB.部門名稱,B2.一級部門,B2.二級部門,B.部門名稱三級部門,''四級部門,''五級部門FROMB2JOIN部門表BONB.上級部門ID=B2.部門名稱WHEREB.層級=2),
B4AS(
SELECTB.部門名稱,B3.一級部門,B3.二級部門,B3.三級部門,B.部門名稱四級部門,''五級部門FROMB3JOIN部門表BONB.上級部門ID=B3.部門名稱WHEREB.層級=3),
B5AS(
SELECTB.部門名稱,B4.一級部門,B4.二級部門,B4.三級部門,B4.四級部門,B.部門名稱五級部門FROMB4JOIN部門表BONB.上級部門ID=B4.部門名稱WHEREB.層級=4),
BAS(
SELECT*FROMB1
UNIONALL
SELECT*FROMB2
UNIONALL
SELECT*FROMB3
UNIONALL
SELECT*FROMB4
UNIONALL
SELECT*FROMB5)
SELECTID,姓名,一級部門,二級部門,三級部門,四級部門,五級部門FROMBJOIN員工表YONY.部門=B.部門名稱
⑩ 急求:SQL層級匯總的語句
CREATE TABLE table1 (
id INT,
name VARCHAR(10),
f_id INT
);
GO
INSERT INTO table1
SELECT 1 , 'a ', 0 UNION ALL
SELECT 2 , 'b ', 0 UNION ALL
SELECT 3 , 'a.1 ', 1 UNION ALL
SELECT 4 , 'a.2 ', 1 UNION ALL
SELECT 5 , 'a.1.1 ', 3 UNION ALL
SELECT 6 , 'a.1.2 ', 3 UNION ALL
SELECT 7 , 'a.2.1 ', 4 UNION ALL
SELECT 8 , 'a.2.2 ', 4 UNION ALL
SELECT 9 , 'a.1.1.1', 5 UNION ALL
SELECT 10, 'a.1.1.2', 5 UNION ALL
SELECT 11, 'a.1.2.1', 6 UNION ALL
SELECT 12, 'a.1.2.2', 6 UNION ALL
SELECT 13, 'a.2.1.1', 7 UNION ALL
SELECT 14, 'a.2.1.2', 7 UNION ALL
SELECT 15, 'a.2.2.1', 8 UNION ALL
SELECT 16, 'a.2.2.2', 8;
GO
CREATE TABLE table2 (
id INT,
t_id INT,
price DECIMAL(5,2)
);
GO
INSERT INTO table2
SELECT 1, 9 , 10.00 UNION ALL
SELECT 2, 10, 5.00 UNION ALL
SELECT 3, 11, 2.00 UNION ALL
SELECT 4, 12, 3.00 UNION ALL
SELECT 5, 13, 4.00 UNION ALL
SELECT 6, 14, 6.50 UNION ALL
SELECT 7, 15, 3.20 UNION ALL
SELECT 8, 16, 4.00
GO
WITH baseQuery
AS (
SELECT
table1.id,
table1.name,
table1.f_id,
ISNULL(table2.price, 0.00) AS price
FROM
table1 LEFT JOIN table2 ON (table1.id = table2.t_id)
), treeCTE
AS (
SELECT
id, name, f_id, price
FROM
baseQuery
WHERE
NOT EXISTS (
SELECT 1
FROM table1
WHERE table1.f_id = baseQuery.id
)
UNION ALL
SELECT
baseQuery.id,
baseQuery.name,
baseQuery.f_id,
CAST(baseQuery.price + treeCTE.price as DECIMAL(5,2))
FROM
baseQuery JOIN treeCTE ON (baseQuery.id = treeCTE.f_id)
)
select
id,
name,
SUM(price) AS price
from
treeCTE
GROUP BY
id,
name
ORDER BY
id
id name price
----------- ---------- ---------------------------------------
1 a 37.70
2 b 0.00
3 a.1 20.00
4 a.2 17.70
5 a.1.1 15.00
6 a.1.2 5.00
7 a.2.1 10.50
8 a.2.2 7.20
9 a.1.1.1 10.00
10 a.1.1.2 5.00
11 a.1.2.1 2.00
12 a.1.2.2 3.00
13 a.2.1.1 4.00
14 a.2.1.2 6.50
15 a.2.2.1 3.20
16 a.2.2.2 4.00
(16 行受影響)