|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.03.2010, 07:04 | #1 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Запрос с выборкой
Формирую запрос из Microsoft Query, не могу отфильтровать поле bypass_sheet.SheetDate на март месяц. Поле имеет диапазон дат на текущий месяц. Пробовал в Select использовать функцию Month(bypass_sheet.SheetDate), выдает ошибку. Подскажите новичку правильное написание запроса
SELECT Cust.CustomerID, Cust.LicNumber, Cust.FirstName, Cust.TownName, Cust.StreetName, Cust.HouseNumber, Cust.Apartment, Customers.Litera, bypass_sheet.SheetDate, bypass_sheet_item.OldMeasure, bypass_sheet_item.Measure FROM Gas.dbo.bypass_sheet bypass_sheet, Gas.dbo.bypass_sheet_item bypass_sheet_item, Gas.dbo.Cust Cust, Gas.dbo.Customers Customers WHERE Cust.CustomerID = Customers.CustomerID AND bypass_sheet_item.CustomerID = Customers.CustomerID AND bypass_sheet.SheetID = bypass_sheet_item.SheetID AND ((bypass_sheet.SheetDate>={ts '2009-03-01 00:00:00'})) ORDER BY Cust.CustomerID |
27.03.2010, 14:29 | #2 |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
|
27.03.2010, 16:55 | #3 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Пример
Я новичок в SQL, поэтому мне нужен пример запроса с выборкой по таблице дата.
Какая структура сказать пока не могу, потому что не знаю какие они бывают, модель явно реляционная. Если своими словами: Имеем таблицы перечисленные в Select, обьединение между таблицами внутреннее, по ключевым столбцам (ИмяТаблицы.ПолеID). Не получается правильно изменить условие bypass_sheet.SheetDate>={ts '2009-03-01 00:00:00'} на bypass_sheet.SheetDate = 'March' . |
27.03.2010, 17:54 | #4 |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
Если я правильно вас понял, то, наверное, так ...
Код:
|
31.03.2010, 06:22 | #5 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Выборка за 12 месяцев
Спасибо, помогло!
Как можно выбрать для каждой записи из Cust.CustomerID значение bypass_sheet_item.OldMeasure за 12 месяцев, т.е. мне нужно разбить строки bypass_sheet_item.OldMeasure на 12 столбцов. SELECT Cust.CustomerID, Cust.LicNumber, Cust.FirstName, Cust.TownName, Cust.StreetName, Cust.HouseNumber, Cust.Apartment, Customers.Litera, bypass_sheet.SheetDate, bypass_sheet_item.OldMeasure, bypass_sheet_item.Measure FROM Gas.dbo.bypass_sheet bypass_sheet, Gas.dbo.bypass_sheet_item bypass_sheet_item, Gas.dbo.Cust Cust, Gas.dbo.Customers Customers WHERE Cust.CustomerID = Customers.CustomerID AND bypass_sheet_item.CustomerID = Customers.CustomerID AND bypass_sheet.SheetID = bypass_sheet_item.SheetID AND Month(bypass_sheet.SheetDate) = 3 AND Year(bypass_sheet.SheetDate) = 2010 ORDER BY Cust.CustomerID |
31.03.2010, 20:03 | #6 | |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
Цитата:
Но тем не менее, сделаем так как нужно именно Вам. Итак, в вашем случае количество выводимых столбцов постоянно: 12 (OldMeasure) + 8 (информация о Customer). Значит, для решения будем использовать PIVOT Ну и собственно, сам запрос: Код:
|
|
01.04.2010, 12:35 | #7 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Ошибка
Запрос не обрабатывается, выдает ошибку: Incorrect syntax near 'Pivot'.
Можете пояснить для чего нужен оператор Pivot , Функция Min() и строки с номерами [1], [2]..... |
01.04.2010, 12:42 | #8 | |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
Цитата:
PIVOT появился в SQL SERVER 2005 Последний раз редактировалось edgy; 01.04.2010 в 13:02. Причина: Дополнения |
|
01.04.2010, 17:46 | #9 |
Пользователь
Регистрация: 25.09.2009
Сообщений: 17
|
Аналогичное решение
На сервере стоит SQL 2000 и с этим ни чего не поделаешь. Может быть есть аналог оператора Pivot, или иное решение? Не хочу перегружать программу лишним кодом на VBA, считаю решение на основе запроса наиболее гибким.
|
01.04.2010, 18:39 | #10 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
воспользуйся case-ом
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с выборкой | Inveerto | Общие вопросы Delphi | 3 | 10.04.2011 19:32 |
Проблема с выборкой | Nightwolf | Microsoft Office Access | 1 | 01.05.2009 09:34 |
Вопрос с выборкой | MHz | Microsoft Office Access | 2 | 13.11.2008 23:19 |
Помогите с выборкой | VRF | Microsoft Office Excel | 5 | 06.11.2008 01:45 |
Как оптимизировать запрос MySQL с выборкой из двух таблиц. | Johnatan | SQL, базы данных | 6 | 13.04.2008 03:10 |