Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
1-1149233928
boalse
2006-06-02 11:38
2006.07.16
Передача параметров asm, Delphi.


2-1151329595
fast2
2006-06-26 17:46
2006.07.16
Как, с помощью SQL связать 2-е таблицы?


3-1147627956
drucha
2006-05-14 21:32
2006.07.16
создание бд interbase


1-1149082572
adalx
2006-05-31 17:36
2006.07.16
Компоненты


15-1150629645
Студент 06
2006-06-18 15:20
2006.07.16
Быть программистом...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский