нужен простой, но сложный запрос SQL - PullRequest
0 голосов
/ 27 июня 2011

Фон

У меня есть таблица (ну, это производная таблица), но она выглядит так: у меня нет прав на чтение / запись, но я могу скопировать всю структуру во временную таблицу.

------------------------------------------------------------------
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> 80, поэтому мы хотим, чтобы правило одно.Также R_2010 - R_2009 = 20 процентов, поэтому мы заинтересованы в этом.

Также в строке, W_2010> 80, поэтому мы хотим, чтобы правило одно Итак, W_2010 - W_2009 = 41, что составляет более 20 процентов, поэтому я тоже хочу эту строку.Обратите внимание на ту же строку, что и выше.

В строке 8, M_2010> 80, однако разница не превышает 20 процентов, поэтому мне это не интересно.

, поэтому я хочу:

------------------------------------------
NEW TEMP TABLE 
------------------------------------------
id, type,  increaseBy
------------------------------------------
8,  R,     20
8,  W,     41

Проблема

Как видите, все эти столбцы VARCHAR, они не имеют одинаковую длину (т. Е. 0%, 20%, 100%), а некоторые даже не имеютпроцент (N/D).У некоторых есть пробел между числом и '%'

Текущая работа ..

Хорошо, я работаю над этим, и я обновлю этот пост, поскольку у меня есть кое-что, что не возвращаетошибка

1 Ответ

0 голосов
/ 27 июня 2011

Я предлагаю первым делом исправить вашу производную таблицу, чтобы избавиться от любых нечисловых символов. Обнулите «N / D» и удалите пробелы и знаки%. Тогда у вас есть номера, с которыми вы можете что-то сделать.

Вам также придется присоединиться к этой таблице как минимум три раза, поскольку вам, кажется, нужны отдельные записи в конце, одна для записей R, одна для записей W и одна для M записей. Возможно, производная таблица не должна пытаться поместить их в одну строку.

Если вы хотите получить результаты по одной строке для каждого типа, вы можете использовать статистику случая, чтобы получить желаемые результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...