作者Linethan (认真魔人)
看板Database
标题[SQL] 如何取得GROUP里 对应某一栏位值的另一栏位资料
时间Mon May 31 19:25:00 2010
我实在不太知道该怎麽下这篇文章的标题才对>"< 问题如下:
我的资料表(称之为data)里有七个栏位:
代号 名称 日期 A B C D
我需要以代号跟名称来分群,以日期作为条件式,A B C要取SUM
原本应该很简单的写成: (写在microsoft query里)
Select data.代号, data.名称, sum(data.A), sum(data.B),
sum(data.c)
From data
WHERE data.日期>='20100501' and data.日期<='20100531'
GROUP BY data.代号, data.名称
以上可以顺利执行,不过 我现在想要加入D栏位
可是我是要在该群组里 对应最大日期的D栏位的值
例如说, 在代号=100 名称=XYZ的GROUP里有三笔资料:
代号 名称 日期 A B C D
100 XYZ 20100503 1 1 1 9
100 XYZ 20100509 1 1 1 3
100 XYZ 20100522 1 1 1 7
我希望跑出来的资料结果是:
100 XYZ 3 3 3 7
(A B C皆取sum故值为3, D我要取对应最大日期的那个值 故为7)
我无法对D下max函数 因为我要取的值不一定是最大值
我试过用case条件式:
SUM(CASE WHEN data.日期=max(data.日期) THEN data.D ELSE 0 END)
但是无法执行 似乎是因为汇总函数里不能再放入汇总函数
可是如果不取SUM的话 CASE WHEN那一句又不是汇总函数 不能用在select里面
有高手可以教教我 我该怎麽写比较好吗??>"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.211.36.254