Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос - отобразить в запросе название вместо номера месяца  [new]
Debusen
Member

Откуда:
Сообщений: 187
Извиняюсь за очередной глупый вопрос.
Есть таблица, в которой хранится Дата заключения, Количество

Я делаю выборку по месяцам из количеств следующим образом:

SELECT     MONTH(Дата_заключения) AS Месяц, SUM(Количество) AS Количество
	FROM         dbo.РеестрДоговоров WHERE YEAR(Дата_Заключения)=@Год
	GROUP BY MONTH(Дата_заключения)

Но мне нужно чтобы в таблице отображался не номер месяца, а его название. Как это сделать?
Пытаюсь привязать связанную таблицу к вычисляемому полю "Месяц", но не получается.
Привязать пытаюсь вот так.

SELECT     MONTH(a.Дата_заключения) AS Месяц, SUM(a.Количество) AS Количество
FROM         dbo.РеестрДоговоров AS a INNER JOIN
                      dbo.Месяцы ON a.Месяц = dbo.Месяцы.ID
GROUP BY MONTH(a.Дата_заключения)
Пишет "Недопустимое имя столбца:месяц".
25 ноя 11, 16:01    [11660092]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
SELECT MONTH(a.[Дата_заключения]) AS [Месяц], SUM(a.[Количество]) AS [Количество]
FROM dbo.[РеестрДоговоров] AS a INNER JOIN
dbo.[Месяцы] ON a.[Месяц] = dbo.Месяцы.ID
GROUP BY MONTH(a.[Дата_заключения])


а у вас в таблице dbo.РеестрДоговоров есть такое поле Месяц ?
25 ноя 11, 16:04    [11660139]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
SELECT     MONTH(a.Дата_заключения) AS Месяц, SUM(a.Количество) AS Количество
FROM         dbo.РеестрДоговоров  a 
  INNER JOIN dbo.Месяцы ON a.Месяц = dbo.Месяцы.ID  -- что ето такое ??? 
GROUP BY MONTH(a.Дата_заключения)
25 ноя 11, 16:05    [11660143]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
fabulaspb
Member

Откуда: Санкт-Петербург
Сообщений: 34
Debusen,

Воспользуйтесь функцией DATENAME(datepart, date), возвращающая символьное представление части даты.
25 ноя 11, 16:05    [11660152]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
fabulaspb,

и получит он January Иили еще чего-то прикольного
25 ноя 11, 16:07    [11660170]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
fabulaspb
Member

Откуда: Санкт-Петербург
Сообщений: 34
Maxx,

Только название месяца на английском :). Ну в конце концов можно сделать временную таблицу с идентификатором месяца и названием месяца на русском, затем ее присоединить по идентификатору месяца.
25 ноя 11, 16:10    [11660194]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
fabulaspb,

да мона все что угодно сделать...
25 ноя 11, 16:12    [11660221]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Debusen
Member

Откуда:
Сообщений: 187
Konst_One
а у вас в таблице dbo.РеестрДоговоров есть такое поле Месяц ?

Нет, такого поля нет. хранится только дата.
Вы просто продублировали мой запрос? Этот запрос тоже не работает, не вижу отличий.
Maxx
INNER JOIN dbo.Месяцы ON a.Месяц = dbo.Месяцы.ID -- что ето такое ???

Это так я пытаюсь присоединить таблицу к таблице. Если вопрос относительно Месяцы.ID, то это поле в таблице "Месяцы", которая есть в БД.
fabulaspb
Воспользуйтесь функцией DATENAME(datepart, date), возвращающая символьное представление части даты.

Такой запрос тоже отображает номера столбцов:
SELECT     DATEPART(month, Дата_заключения) AS Месяц, SUM(Количество) AS Количество
FROM         dbo.РеестрДоговоров AS a
GROUP BY DATEPART(month, Дата_заключения)
25 ноя 11, 16:19    [11660315]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
ChA
Member

Откуда: Москва
Сообщений: 11314
Maxx
и получит он January
Так установки сессии надо правильно устанавливать.
SET LANGUAGE russian
SELECT DATENAME(mm, CURRENT_TIMESTAMP)
--------
Ноябрь
25 ноя 11, 16:19    [11660319]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Debusen
Member

Откуда:
Сообщений: 187
fabulaspb
Только название месяца на английском :). Ну в конце концов можно сделать временную таблицу с идентификатором месяца и названием месяца на русском, затем ее присоединить по идентификатору месяца.

Я именно это и пытаюсь сделать, но у меня не получается.
25 ноя 11, 16:21    [11660337]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
мдя

Ваш запрос не работает априори - он неправильно написан,и хуже всего что вы даже непонимаете почему

Вместо датапрат ,вам уже предложили датенаме

какие поля в вашей талице дбо.Месяцы вообще есть ?
25 ноя 11, 16:21    [11660341]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ChA
Maxx
и получит он January
Так установки сессии надо правильно устанавливать.
SET LANGUAGE russian
SELECT DATENAME(mm, CURRENT_TIMESTAMP)
--------
Ноябрь

с ума сойти,а мужики то и не знали ;)
25 ноя 11, 16:22    [11660349]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Debusen
Если вопрос относительно Месяцы.ID, то это поле в таблице "Месяцы", которая есть в БД.


а здесь что за данные у вас лежат и какого типа? и зачем вам вообще понадобилась повязка к этой таблице?

сразу наименование выводите одним запросом
25 ноя 11, 16:23    [11660365]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
кстати, и кол-во вы криво считаете. у вас там что, всё за один год?
25 ноя 11, 16:24    [11660383]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Debusen
Member

Откуда:
Сообщений: 187
Сори, перепутал название функции )))) Все нормально работет.
Вопрос закрыт.
25 ноя 11, 16:26    [11660400]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Debusen
Member

Откуда:
Сообщений: 187
автор
кстати, и кол-во вы криво считаете. у вас там что, всё за один год?

Не, запрос является частью функции. Чтобы упростить задачу я привёл только запрос.
25 ноя 11, 16:27    [11660406]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
fabulaspb
Maxx,

Только название месяца на английском :). Ну в конце концов можно сделать временную таблицу с идентификатором месяца и названием месяца на русском, затем ее присоединить по идентификатору месяца.
Месяцев - целых 12 штук!!
Ну разве ж можно CASE использовать в такой обстановке?!
25 ноя 11, 16:35    [11660484]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
тут народ за красоту кода похоже борется
25 ноя 11, 16:38    [11660511]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap,

чет помоему с автором текста путаница вышла
ЗЫ - у меня вообще таблица -календарь завсегда имееться с самым невозможнными вариантами ,которые может придумать юзверь..1 раз заполнил и не занимаюсь изобретениями названий
25 ноя 11, 16:52    [11660664]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
яяяяяя
Guest
Debusen,

select sq.Месяц, sq.Количество, m.*
from
(
SELECT MONTH(a.Дата_заключения) AS Месяц, SUM(a.Количество) AS Количество
FROM dbo.РеестрДоговоров AS a
GROUP BY MONTH(a.Дата_заключения)
)sq
INNER JOIN dbo.Месяцы m ON sq.Месяц = m.ID
25 ноя 11, 17:25    [11660955]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Название лучше либо case-ом, либо в таблице хранить. По номеру "писать/джойнить". Если важно язык/написание/количество букв.
26 ноя 11, 13:36    [11663715]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Да-да, повсеместный бардак в локали, это "нормально" и этот бардак лень побороть и "кошерно" его обходить костылями справочных таблиц/представлений/функций или CASE-ов.
27 ноя 11, 04:14    [11665908]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Kat25
Member

Откуда:
Сообщений: 3
Как написать процедуру для вставки в шаблон (где используется функция возвращающая сегодняшнюю дату и месяц прописью)?
11 апр 12, 09:58    [12397263]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Kat25, а причём тут Базы Данных?
Этим занимается клиентское приложение.

11660319
11 апр 12, 12:44    [12398564]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - отобразить в запросе название вместо номера месяца  [new]
aleks2
Guest
Kat25
Как написать процедуру для вставки в шаблон (где используется функция возвращающая сегодняшнюю дату и месяц прописью)?

1. Шаблон то из сосны али из березы?
2.

declare @shablon as varchar(1024)
set @shablon ='Дата вашей смерти прописью {дата_смерти_прописью}.'

select REPLACE(@shablon, '{дата_смерти_прописью}', dbo.Death_Date())
11 апр 12, 12:49    [12398617]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить