2015-08-23 4 views
-1

Я создал базу данных SQL Server, и есть таблица «СТОИМОСТЬ ПРОДУКТОВ» (> 600 000 строк). Я должен сделать запрос, который показывает, какие продукты изменили цену. Как вы можете видеть ниже: 1,2,3 строки, потому что 1-й положительный и 2-й отрицательный; 3-й позитив. Насколько я понимаю, я должен создать дополнительную таблицу и проверить, используя внутреннее соединение, или использовать функцию Lag/Lead.Чередование положительных и отрицательных чисел

Кто знает, что является лучшим способом сделать это?

ID | COST | CHANGE 
1 | 450 | 1,4 
2 | 350 | -0,8 
3 | 470 | 1,2 
4 | 550 | 1,3 
+0

Пожалуйста, измените свой вопрос и добавить данные * в вопрос * в формате таблицы. –

+2

Добро пожаловать в переполнение стека. Вскоре прочитайте страницу [О программе]. Я понимаю, что английский - это не ваш родной язык, но ваш вопрос еще не ясен. В столбце «change» у вас есть цифры с запятой; эта запятая указывает десятичную точку в вашей локали? Является ли это число абсолютным изменением или процентным изменением? Столбец затрат является целым числом или значением с плавающей запятой? Вам нужно показать «какие продукты изменили цену». Я не совсем понимаю, что вы имеете в виду. Это все продукты с ненулевым значением в столбце «Изменить»? _ [... продолжение ...] _ –

+0

_ [... продолжение ...] _ Вы запрашиваете переменные положительные и отрицательные числа; но неясно, какие числа чередуются, и что вы должны делать, если есть 350 000 строк с положительным изменением и 250 000 строк с отрицательным изменением. Кроме того, чередование зависит от последовательности, т. Е. Результаты запроса представляют собой набор строк, а наборы не упорядочены. Чтобы навязать «переменное» требование, вы должны заказать результаты (ORDER BY в SQL). Но что вы сортируете? Таким образом, вам нужно уточнить, что вы пытаетесь сделать несколькими способами, прежде чем мы сможем вам помочь. –

ответ

2

Если вы просто хотите, чтобы данные, перечисленные с положительными, а затем отрицательный вы можете сделать:

SELECT * FROM COST_OF_PRODUCTS 
WHERE CHANGE>0 
UNION 
SELECT * FROM COST_OF_PRODUCTS 
WHERE CHANGE<0 

Или

SELECT * FROM COST_OF PRODUCTS 
ORDER BY CHANGE 
+0

обратите внимание, что первый (с использованием 'UNION') будет исключать, когда change = 0, но это может можно включить, изменив один из '>' или '<' to '> =' или '<='. – rofls

+0

Спасибо, но это не то, что я хочу, ваш запрос показывает ++++++ ---------, но мне нужно увидеть, какие строки имеют переменные значения + - + - + - + - – PASE7

Смежные вопросы