#sql #ms-access
Вопрос:
У меня есть этот стол:
код | ПОДКОД | ценность |
---|---|---|
1 | 120 | 5130 |
1 | 100 | 1000 |
1 | 983 | -123 |
2 | 100 | 598123 |
2 | 713 | -7123 |
2 | 813 | -78123 |
3 | 110 | 5123 |
3 | 130 | -8976 |
4 | 150 | 951 |
4 | 123 | -6891 |
5 | 160 | 513 |
5 | 512 | -213 |
Как я могу получить список всех положительных столбцов данных с одной стороны и с другой стороны со всеми отрицательными данными?
ПОДКОД | ценность | ПОДКОД | ценность |
---|---|---|---|
100 | 598123 | 813 | -78123 |
120 | 5130 | 130 | -8976 |
110 | 5123 | 713 | -7123 |
100 | 1000 | 123 | -6891 |
150 | 951 | 512 | -213 |
160 | 513 | 983 | -123 |
Ответ №1:
Я не знаю, почему предыдущая версия этого вопроса была закрыта, потому что это было совершенно ясно с образцами данных и желаемыми результатами.
С большой болью в MS Access-но это возможно. Вам нужно перечислить значения, а затем объединить их. Я думаю, что это сработает:
select max(subcode), max(data), max(subcode_neg), max(data_neg)
from (select subcode, data, null as subcode_neg, null as data_neg
(select count(*) from t as t2 where t2.subcode <= t.subcode and t2.data > 0
) as seqnum
from t
where data > 0
union all
select null, null, subcode, data,
(select count(*) from t as t2 where t2.subcode <= t.subcode and t2.data < 0
) as seqnum
from t
where data < 0
) as tt
group by seqnum;