###求汇总sql语句###
“序号,类型,类型下属等级,年份” 几个字段
---------------
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
--*/
[解决办法]
access数据库?没有cast吧
[解决办法]
Access 用iif(isnull())处理。
[解决办法]
Access数据库中没有case when ,可以使用iif(isnull())处理。