我有一个表(以及它的派生表),但它看起来像这样:我没有读/写权限,但我可以将整个结构复制到临时表。
------------------------------------------------------------------
id | R_2010 | R_2009 | W_2010 | W_2009 | M_2010 | M_2009 |
------------------------------------------------------------------
1 33% 56% 47% 56% 40% 33%
2 N/D N/D N/D N/D N/D N/D
3 64 % 77 % 71 % 84 % 49 % 71 %
4 N/D N/D N/D N/D 89% 84%
5 56% N/D 58% N/D 62% N/D
6 100% 0% 100% 50% 100% 50%
7 94% 71% 94% 82% 100% 82%
基本上我想做的是以下内容:
If %_2010 is between 80 - 100 AND there is an increase from
%_2009 to %_2010 by 20 percent, i want this row.
Similary If %_2010 is between 70 - 80 AND there is an increase from
%_2009 to %_2010 by 25 percent, i want this row.
Similary If %_2010 is between < 70 AND there is an increase from
%_2009 to %_2010 by 30 percent, i want this row.
* % = R, W, M
考虑第8行。其R_2010&gt; 80所以我们想要第一条规则。 此外,R_2010 - R_2009 = 20%,所以我们对此感兴趣。
同样在排,W_2010&gt; 80所以我们想要第一条规则 所以W_2010 - W_2009 = 41这个超过20%,所以我也想要这一行。 注意与上面的行相同。
在第8行,M_2010&gt;但是,差异不超过20% 所以我不感兴趣。
所以我想:
------------------------------------------
NEW TEMP TABLE
------------------------------------------
id, type, increaseBy
------------------------------------------
8, R, 20
8, W, 41
如您所见,所有这些列都是VARCHAR
,它们的长度不同(即0%,20%,100%),有些甚至没有百分比({{1} })。有些在数字和'%'之间有一个空格
我正在努力,我将更新这篇文章,因为我有一些不会返回错误
答案 0 :(得分:0)
我建议首先要修复派生表以摆脱任何非数字字符。取消“N / D”并删除空格和%符号。然后你有你可以做的事情的数字。
您还必须至少三次加入此表,因为您似乎最终需要单独的记录,一个用于R记录,一个用于W记录,一个用于M记录。也许派生表不应该尝试将它们放在一行中。
如果您希望每种类型的结果都在一行上,您可以使用案例陈述来获得所需的结果。