Разделяем отрицательные и положительные значения столбца
У меня имеется Таблица 1 в MSQL Server 2000.
Мне надо сделать запрос с подзапросами или еще как-то, чтобы получить из нее 2 таблицы:
Таб 1.1. - только положитедьные значения amt
и
Таб 1.2. - только отрицательные значения amt
Tab 1
NumberUser | amt
3001 | -200
3001 | 100
3001 | 345
3001 | 234
3001 | <NULL>
3001 | 150
3001 | -260
3001 | 359
Tab 1.1
NumberUser | amtPOS
3001 | 100
3001 | 345
3001 | 234
3001 | 150
3001 | 359
Tab 1.2
NumberUser | amtNEG
3001 | -200
3001 | -260
Пытался следующим образом и др., однако не получается.
set RST=Conn.execute(" " &_
"SELECT " &_
"amt AS amtPos, amt AS amtNEG, NumberUser " &_
"From Tab1" &_
"WHERE ( " &_
"(amt>0) OR (amt<0) " &_
" ) " &_
" ")
Есть на ASP процедура, которая решает проблему со следующим запросом.
Однако хотелость бы попроще решить ее.
set RST=Conn.execute(" " &_
"SELECT " &_
"amt, NumberUser " &_
"From Tab1" &_
"WHERE ( " &_
"(amt>0) OR (amt<0) " &_
" ) " &_
" ")
Удачи,
и спасибо заранее
Выбери сначала первое, потом второе, или отсортируй по значению и перебирая строки (ты ведь будешь их перебирать?) сначала суй все что попадется в один массив, а на первом попавшемся положительном (или отрицательном, как отсортируешь) значении суй результаты в другой массив (или что там еще).
Цитата:
Originally posted by Shiizoo
Не работал с asp, но каким образом ты из одного запроса сделаешь две коллекции строк - результатов выборки??
Выбери сначала первое, потом второе, или отсортируй по значению и перебирая строки (ты ведь будешь их перебирать?) сначала суй все что попадется в один массив, а на первом попавшемся положительном (или отрицательном, как отсортируешь) значении суй результаты в другой массив (или что там еще).
Не работал с asp, но каким образом ты из одного запроса сделаешь две коллекции строк - результатов выборки??
Выбери сначала первое, потом второе, или отсортируй по значению и перебирая строки (ты ведь будешь их перебирать?) сначала суй все что попадется в один массив, а на первом попавшемся положительном (или отрицательном, как отсортируешь) значении суй результаты в другой массив (или что там еще).
Случайно получилось.
Мне подсказали как решить проблему:
если надо один столбец разбить на два опционно, то используй CASE ... напримет так:
select
CASE WHEN [amt]>0 THEN [amt] ELSE NULL END as amtPos,
CASE WHEN [amt]<0 THEN [amt] ELSE NULL END as amtNEG
from Tab1
Сработало.
Спасибо и удачи Вам