Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 21:01   #11
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

NIKOLASCS,

да, если 2000, то PIVOT, к сожалению, не прокатит.

Тогда остаются варианты:
1) Воспользоватся case-ом, как посоветовал soleil@mmc. Имхо, в данном случае, наиболее оптимальный вариант.
2) Использование курсоров. Но, как я уже говорил, это весьма и весьма тормознутый способ. К тому же применяется в основном в динамических запросах, когда количество выводимых столбцов заранее неизвестно. Что уже не Ваш случай. Применяется, обычно в крайних случаях, когда других вариантов нет. Поэтому этот вариант можно смело отбросить. Хотя, если интересно, то отпишите мне в личку - скину пример использования.

С case запрос будет выглядеть примерно как-то так:
Код:
SELECT Cust.CustomerID, 
           Cust.LicNumber, 
           Cust.FirstName, 
           Cust.TownName, 
           Cust.StreetName, 
           Cust.HouseNumber, 
           Cust.Apartment, 
           Customers.Litera,
           MAX( CASE 
                      WHEN Month(bypass_sheet.SheetDate ) = 1
	           THEN bypass_sheet_item.OldMeasure
     	       END ) AS [1],
           MAX( CASE 
                      WHEN Month( bypass_sheet.SheetDate ) = 2
		THEN bypass_sheet_item.OldMeasure
                   END ) AS [2],
           MAX( CASE 
		WHEN Month( bypass_sheet.SheetDate ) = 3
		THEN bypass_sheet_item.OldMeasure
	       END ) AS [3],
           MAX( CASE
		WHEN Month( bypass_sheet.SheetDate ) = 4
		THEN bypass_sheet_item.OldMeasure
   	       END ) AS [4],
           MAX( CASE 
		WHEN Month( bypass_sheet.SheetDate ) = 5
		THEN bypass_sheet_item.OldMeasure
	        END ) AS [5],
           MAX( CASE 
		WHEN Month( bypass_sheet.SheetDate ) = 6
		THEN bypass_sheet_item.OldMeasure
  	        END ) AS [6],
           MAX( CASE 
  		WHEN Month(bypass_sheet.SheetDate ) = 7
		THEN bypass_sheet_item.OldMeasure
 	        END ) AS [7],
           MAX( CASE 
   	          WHEN Month( bypass_sheet.SheetDate ) = 8
	          THEN bypass_sheet_item.OldMeasure
                   END ) AS [8],
           MAX( CASE 
		WHEN Month( bypass_sheet.SheetDate ) = 9
		THEN bypass_sheet_item.OldMeasure
   	        END ) AS [9],
           MAX( CASE
      	           WHEN Month( bypass_sheet.SheetDate ) = 10
		THEN bypass_sheet_item.OldMeasure
	        END ) AS [10],
           MAX( CASE
		 WHEN Month( bypass_sheet.SheetDate ) = 11
		 THEN bypass_sheet_item.OldMeasure
	        END ) AS [11],
           MAX( CASE
		WHEN Month(bypass_sheet.SheetDate ) = 12
		THEN bypass_sheet_item.OldMeasure
       	        END ) AS [12]
  FROM bypass_sheet, 
          bypass_sheet_item, 
          Cust, 
          Customers 
 WHERE Cust.CustomerID = Customers.CustomerID 
     AND bypass_sheet_item.CustomerID = Customers.CustomerID 
     AND bypass_sheet.SheetID = bypass_sheet_item.SheetID
GROUP BY Cust.CustomerID, 
              Cust.LicNumber, 
              Cust.FirstName, 
              Cust.TownName, 
              Cust.StreetName, 
              Cust.HouseNumber, 
              Cust.Apartment, 
              Customers.Litera
Ну, возможно, Вам придется немного отшлифовать его под себя.
edgy вне форума Ответить с цитированием
Старый 02.04.2010, 07:20   #12
NIKOLASCS
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 17
По умолчанию

Благодарю! Попробуем.
NIKOLASCS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с выборкой 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