Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Вопрос по Access   Найти похожие ветки 

 
Crazy manager   (2006-06-15 10:53) [0]

Есть обычная таблица, где есть 2 самых важных поля: "месяц" и "сумма". Проблема в том, что в "месяце" месяцы в текстовом формате (Январь, Февраль ...), т.к изначально меня это вполне устраивало. Однако, сейчас я делаю запрос на группировку и хочу сортировать месяцы по убыванию.

Без сортировки, выглядит так:
Январь 100
Март 200
Октябрь 450
Май 700
и.т.д.

Необходимо чтобы было так:
Январь 100
Февраль 150
Март 200
Апрель 100
и.т.д

Как быть в этой ситуации? Аксес видит, что это текстовые поля и видимо сортирует их по количеству символов в слове, а необходимо сортировка по месяцам. Как выполнить данную задачу?


 
blackcrazzy ©   (2006-06-15 11:00) [1]

Select * FROM Таблица ORDER BY Месяц


 
Sergey13 ©   (2006-06-15 11:06) [2]

Нет ли в Аксесе функции а-ля Оракловому DECODE?

ЗЫ: В качестве "потрепаться" - как сделал, так и получилось. 8-)


 
Crazy manager   (2006-06-15 11:10) [3]

Так и делаю:

SELECT Счета.Месяц, Sum(Счета.Сумма) AS [Sum-Сумма]
FROM Счета
GROUP BY Счета.Месяц
ORDER BY Счета.Месяц DESC;

Проблема в том, что месяц идет как текст, поэтому и группировка корявая... не по сути (т.е не по хронологии), а по непонятно какому принципу.


 
Crazy manager   (2006-06-15 11:11) [4]


> Нет ли в Аксесе функции а-ля Оракловому DECODE?

Это типа риторический вопрос? Типа есть такая функция? Я просто Аксес только стал осваивать.... много всего не знаю.


 
blackcrazzy ©   (2006-06-15 11:14) [5]

Извиняюсь, это сортировка месяцев по алфавиту.


 
Sergey13 ©   (2006-06-15 11:18) [6]

2[4] Crazy manager   (15.06.06 11:11)
>  Я просто Аксес только стал осваивать
Ну так переделай сразу нормально, вместо названия месяца поставь номер.


 
КаПиБаРа ©   (2006-06-15 11:18) [7]

Добавь поле Месяц в числовом формате


 
crazy all   (2006-06-15 11:19) [8]

[2] почему вы не добавили кодовое слово принадлежности?


 
Crazy manager   (2006-06-15 11:25) [9]


> Добавь поле Месяц в числовом формате

Я извеняюсь а как? У меня достаточно здоровая таблица и переделывать ее вручную думаю будет мягко говоря мучительным процессом. Можно автоматизировать этот процесс? Есть какие-нить встроенные функции в Аксесе? Может в запрос вставить определенное условие?


 
ЮЮ ©   (2006-06-15 11:40) [10]


> У меня достаточно здоровая таблица и переделывать ее вручную
> думаю будет мягко говоря мучительным процессом.


Интересно, под переделыванием "вручную" что понимается, если не
1) Добавить поле НомерМесяца в режиме конструктора
2) выполнить 12 запросов
 Update Счета SET НомерМесяца = 1 WHERE Месяц = "Январь"
 ...
 Update Счета SET НомерМесяца = 12 WHERE Месяц = "Декабрь"
3) Убить поле Месяц в режиме конструктора

З.Ы. Странная, однако, табличка. А как в следующем году ею пользоваться будешь? Опять январь придет


 
КаПиБаРа ©   (2006-06-15 11:44) [11]

Типа этого

Update
(FCodeMonth)
values
(1)
where FMonth = "Январь"

точный синтаксис не помню


 
sniknik ©   (2006-06-15 12:04) [12]

> Нет ли в Аксесе функции а-ля Оракловому DECODE?
нет, но есть даже несколько "обходных" маневров сделать желаемое (хотя месяц хранить строкой... странно по крайней мере)

например
SELECT * FROM xxxxx  ORDER BY CDate(MonthField+" 1, 1")

тар будет работать, но только на русифицированной винде, и при условии что в названии кокогонибудь месяца не допущена ошибка...

также можно желаемый порядок задать условием с помощью iif или Switch.


 
sniknik ©   (2006-06-15 12:08) [13]

> 2) выполнить 12 запросов
достаточно одного. по тому же принципу

Update Счета SET НомерМесяца = Month(CDate(Месяц+" 1, 1"))


 
Crazy manager   (2006-06-15 12:35) [14]

Спасибо за помощь! По совету решил принципиально все переделать. Машина с квадратными колесами, которые сейчас у меня стоят, меняем на овальные :) , т.к жить так дальше нельзя. Вообще мораль моего вопроса в том, что надо изначально все делать правильно чтобы потом не страдать фигней.


 
Percent   (2006-06-15 12:46) [15]

Вообще мораль моего вопроса в том, что надо изначально все делать правильно чтобы потом не страдать фигней.

Золотые слова. Используйте для поля даты и времени тип DATETIME.



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
3-1147761663
mr.il
2006-05-16 10:41
2006.07.16
передать параметр в IBDataSet


15-1150149793
www.asm-forever.com
2006-06-13 02:03
2006.07.16
Новый форум по ассемблеру ww.asm-forever.com


2-1151421015
fast2
2006-06-27 19:10
2006.07.16
Как в Memo прочитать n-ю строку?


3-1147626786
Alpine
2006-05-14 21:13
2006.07.16
Вопрос по настройке клиента в IB


2-1151552404
stock
2006-06-29 07:40
2006.07.16
выполнение winExec