“序号,类型,类型下属等级,年份” 几个字段
---------------
cid, ckind, clevel, cyear
1 A A1 1999
2 A A2 1999
3 A A3 1999
4 b b1 1998
5 A A1 1998
6 A A2 1998
7 B b1 1999
8 C c2 1997
9 B b3 1999
10 B b2 1999
...要统计每一年里 每种类型下 每个等级 的记录数量:年份| 类a.等级A1 | a.A2 | a.A3 | b.b1 | b.b2 | c.c1 | c.c3 ...
-- ------ -- --- -- --- -- -- -
1999 X X Y Z X X ?
1998
1997
...%%%%%%%%%%%%%%%%%%%%%%
在access里运行
请问如何写sql?
DECLARE @t TABLE(Year int,Quarter int,Quantity decimal(10,1),Price decimal(10,2))
INSERT @t SELECT 1990, 1, 1.1, 2.5
UNION ALL SELECT 1990, 1, 1.2, 3.0
UNION ALL SELECT 1990, 2, 1.2, 3.0
UNION ALL SELECT 1990, 1, 1.3, 3.5
UNION ALL SELECT 1990, 2, 1.4, 4.0
UNION ALL SELECT 1991, 1, 2.1, 4.5
UNION ALL SELECT 1991, 2, 2.1, 4.5
UNION ALL SELECT 1991, 2, 2.2, 5.0
UNION ALL SELECT 1991, 1, 2.3, 5.5
UNION ALL SELECT 1991, 1, 2.4, 6.0--查询处理
SELECT Year,
Q1_Amount=SUM(CASE Quarter WHEN 1 THEN Quantity END),
Q1_Price=CAST(AVG(CASE Quarter WHEN 1 THEN Price END) AS DECIMAL(10,2)),
Q1_Money=CAST(SUM(CASE Quarter WHEN 1 THEN Quantity*Price END) AS DECIMAL(10,2)),
Q2_Amount=SUM(CASE Quarter WHEN 2 THEN Quantity END),
Q2_Price=CAST(AVG(CASE Quarter WHEN 2 THEN Price END) AS DECIMAL(10,2)),
Q2_Money=CAST(SUM(CASE Quarter WHEN 2 THEN Quantity*Price END) AS DECIMAL(10,2))
FROM @t
GROUP BY Year
/*--结果
Year Q1_Amount Q1_Price Q1_Money Q2_Amount Q2_Price Q2_Money
------- ----------------- --------------- ----------------- ----------------- -------------- ----------------
1990 3.6 3.00 10.90 2.6 3.50 9.20
1991 6.8 5.33 36.50 4.3 4.75 20.45
--*/