0
要在sqlite中执行交叉表/数据透视表,可以使用case
声明,如here。但是,无法对这些'生成'列进行计算,即将'Puma'列的内容除以'Fiesta'列。如何在sqlite中通过大小写进行crosstab/pivot计算?
我的解决办法一直是创建包含“彪马”和“嘉年华”列和join
此view
到主“交叉”的输出的辅助view
和从接合辅助表划分的列。
CREATE VIEW aux_table AS SELECT
shop_id,
sum(CASE WHEN product = 'Fiesta' THEN units END) as Fiesta,
sum(CASE WHEN product = 'Focus' THEN units END) as Focus`
FROM sales
GROUP BY shop_id;
SELECT
shop_id,
sum(CASE WHEN product = 'Fiesta' THEN units END) as Fiesta,
sum(CASE WHEN product = 'Focus' THEN units END) as Focus,
sum(CASE WHEN product = 'Puma' THEN units END) as Puma,
at.Fiesta/at.Focus 'ratio between Fiesta and Focus'
FROM sales
JOIN aux_table at ON
sales.shop_id = at.shop_id
GROUP BY shop_id;
但我不知道是否有一个更简单的方法来做到这一点。
谢谢,我想我只是试过:“(CASE WHEN ...)/(CASE WHEN ...)'而不是'avg((CASE WHEN ...)/ avg(CASE WHEN ...)',就像我的情况一样不需要“平均”,“和”等。 – sseelenluft 2012-01-10 16:54:44