表1 (level表示级别 1为省 2为市 3为县)
id name level parentid
0 河北 1
1 保定 2 0
2 石家庄 2 0
3 唐山 2 0
4 定州 3 1
5 望都 3 1
6 正定 3 2
7 新乐 3 2
8 正天 3 3
表2
id value areaid
1 3 1
2 5 2
3 2 3
4 1 4
5 2 5
6 0 7
7 1 8
8 2 6现在要求的查询结果是如下:
name Fitem
保定 6
石家庄 7
唐山 3其中fitem为:为当前市(包含下面县的合计值).如何以市为单位查出上面的结果.access高手帮忙写下.万分感谢
id name level parentid
0 河北 1
1 保定 2 0
2 石家庄 2 0
3 唐山 2 0
4 定州 3 1
5 望都 3 1
6 正定 3 2
7 新乐 3 2
8 正天 3 3
表2
id value areaid
1 3 1
2 5 2
3 2 3
4 1 4
5 2 5
6 0 7
7 1 8
8 2 6现在要求的查询结果是如下:
name Fitem
保定 6
石家庄 7
唐山 3其中fitem为:为当前市(包含下面县的合计值).如何以市为单位查出上面的结果.access高手帮忙写下.万分感谢
access中不知道怎么弄。
CREATE TABLE A11
(
id INT, name NVARCHAR(20), level INT, parentid INT
)
INSERT INTO A11
SELECT
0 ,'河北', 1,NULL
UNION SELECT
1 ,'保定', 2 ,0
UNION SELECT
2 ,'石家庄', 2 ,0
UNION SELECT
3 ,'唐山 ',2 ,0
UNION SELECT
4 ,'定州 ',3 ,1
UNION SELECT
5 ,'望都 ',3, 1
UNION SELECT
6 ,'正定', 3 ,2
UNION SELECT
7 ,'新乐', 3 ,2
UNION SELECT
8 ,'正天', 3, 3CREATE TABLE A111
(
id INT, value INT, areaid INT
)
INSERT INTO A111
SELECT
1, 3, 1
UNION SELECT 2, 5, 2
UNION SELECT 3, 2, 3
UNION SELECT 4, 1, 4
UNION SELECT 5, 2, 5
UNION SELECT 6, 0, 7
UNION SELECT 7, 1, 8
UNION SELECT 8, 2, 6
SELECT CNAME,SUM(value) FROM
(
SELECT *,CASE WHEN LEVEL=3 THEN (SELECT ID FROM A11 WHERE ID=A.PARENTID) ELSE LEVEL END CID,
CASE WHEN LEVEL=3 THEN (SELECT NAME FROM A11 WHERE ID=A.PARENTID) ELSE NAME END CNAME FROM A11 A
)T
INNER JOIN A111 B
ON T.ID=B.areaid
GROUP BY CNAME
这种写法在access中是错误的.即使换成了access中的switch或者iif SELECT ID FROM A11 WHERE ID=A.PARENTID这一句不对.