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

Откуда: Moscow Square
Сообщений: 635
Есть таблица и запросы:
CREATE TABLE #t(
	Id int, 
	OptionName sysname, 
	ValueDate datetime,
	ValueInt bigint
)

INSERT INTO #t VALUES(1, 'Date', '20120220', NULL)
INSERT INTO #t VALUES(1, 'Int', NULL, 100)
INSERT INTO #t VALUES(2, 'Date', '20120220', NULL)
INSERT INTO #t VALUES(2, 'Int', NULL, 200)

SELECT *
FROM(
	SELECT 
		Id,
		OptionName,
		ValueDate
	FROM #t
	WHERE ValueDate IS NOT NULL
) as c
PIVOT
(
	MAX(ValueDate) FOR OptionName IN 
	(
		[Date]
	)
) as p

SELECT *
FROM(
	SELECT 
		Id,
		OptionName,
		ValueInt
	FROM #t
	WHERE ValueInt IS NOT NULL
) as c
PIVOT
(
	MAX(ValueInt) FOR OptionName IN 
	(
		[Int]
	)
) as p

DROP TABLE #t

После чего таблицы объединяются.
Реально ли сделать это одним запросом с PIVOT, а не двумя, чтобы получить таблицу вида:
1	2012-02-20  100
2	2012-02-20  200

?
20 фев 12, 10:42    [12120456]     Ответить | Цитировать Сообщить модератору
 Re: Разные типы в PIVOT  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Oblom,
SELECT MAX(CASE WHEN ...) ...
20 фев 12, 10:45    [12120473]     Ответить | Цитировать Сообщить модератору
 Re: Разные типы в PIVOT  [new]
Oblom
Member

Откуда: Moscow Square
Сообщений: 635
kDnZP,
это понятно, но хотелось бы это PIVOT-ом сделать, он вроде как специально под разворот таблицы заточен. Или поля разных типов развернуть не получится?
20 фев 12, 11:05    [12120627]     Ответить | Цитировать Сообщить модератору
 Re: Разные типы в PIVOT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
Oblom
kDnZP,
это понятно, но хотелось бы это PIVOT-ом сделать, он вроде как специально под разворот таблицы заточен. Или поля разных типов развернуть не получится?
Он заточен для разворота нескольких записей с одним полем в одну запись с столбцами по значению этого поля.

А у вас какой то слишком нетривиальный случай :-) По крайней мере, PIVOT-ом не поддерживается.
20 фев 12, 11:10    [12120657]     Ответить | Цитировать Сообщить модератору
 Re: Разные типы в PIVOT  [new]
Oblom
Member

Откуда: Moscow Square
Сообщений: 635
alexeyvg, kDnZP,
спасибо за оперативную помощь.
Будем как в старину CASE-ить и GROUP BY-ить.
20 фев 12, 11:45    [12120931]     Ответить | Цитировать Сообщить модератору
 Re: Разные типы в PIVOT  [new]
iljy
Member

Откуда:
Сообщений: 8711
Oblom
kDnZP,
это понятно, но хотелось бы это PIVOT-ом сделать, он вроде как специально под разворот таблицы заточен. Или поля разных типов развернуть не получится?

Вообще PIVOT - это чисто синтаксический сахар для конкретного простейшего случая, так что разнообразия от него ожидать не стоит.
20 фев 12, 11:55    [12121070]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить