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

Откуда:
Сообщений: 42
Есть запрос
select dse ,data,sum(kl ) from plan group by data,dse

Нужно чтобы данные поля даты стали столбцами.
должна получиться таблица

DSE '10.01.208' '11.01.2018' '12.01.2018'

R1
6 июн 18, 13:06    [21472423]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
pivot
6 июн 18, 13:07    [21472431]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
Васелина
Member

Откуда:
Сообщений: 42
Я не знаю какие значения может принимать поле data
6 июн 18, 13:16    [21472470]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
Васелина
Member

Откуда:
Сообщений: 42
все значения дат я могу получить запросом select data from plan group by data , а как эти значения вставить в запрос.
6 июн 18, 13:22    [21472495]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
aleks222
Member

Откуда:
Сообщений: 952
Васелина
Я не знаю какие значения может принимать поле data

Классическая русская задача: пойди туда не знаю куда, принеси то, не знаю что.

ЗЫ. Ну, потренируйтесь в динамических запросах.
Только нахена может понадобиться табличка с неизвестными полями и размерами?
6 июн 18, 13:24    [21472508]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
zby
Member

Откуда: Мск
Сообщений: 42
Васелина,

динамический pivot
6 июн 18, 13:50    [21472629]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
Васелина
Member

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

Спасибо
6 июн 18, 16:09    [21473246]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
Penner
Member

Откуда:
Сообщений: 334
+
CREATE FUNCTION [dbo].[str2row]	(
	@RowData NVARCHAR(MAX)
	,@SplitOn NVARCHAR(5) )
RETURNS @ReturnValue TABLE ( Data NVARCHAR(MAX) )
AS
BEGIN
	DECLARE	@Counter INT           = 1
		,@MyData     NVARCHAR(MAX)

	IF NOT (@SplitOn = CHAR(13) + CHAR(10) OR @SplitOn = CHAR(13) OR @SplitOn = CHAR(10))
	BEGIN
		SET @RowData = REPLACE(@RowData, CHAR(13), '');
		SET @RowData = REPLACE(@RowData, CHAR(10), '');
	END
	ELSE
		IF @SplitOn = CHAR(10)
			SET @RowData = REPLACE(@RowData, CHAR(13), '');
		ELSE
			IF @SplitOn = CHAR(13)
				SET @RowData = REPLACE(@RowData, CHAR(10), '');

	IF LTRIM(RTRIM(@RowData)) <> ''
	BEGIN
		WHILE (Charindex(@SplitOn, @RowData) > 0)
		BEGIN
			SET @MyData = LTRIM(RTRIM(Substring(@RowData, 1, PATINDEX('%' + @SplitOn + '%', @RowData) - 1)))
			/* ' Entfernen */
			IF LEFT(@MyData, 1)='''' AND RIGHT(@MyData, 1)=''''
			BEGIN
				SET @MyData = Substring(@MyData, 2, LEN(@MyData) - 2)
			END

			IF LTRIM(@MyData) <> ''
				INSERT INTO @ReturnValue ( data )
				SELECT	Data = @MyData;

			SET @RowData = Substring(@RowData, PATINDEX('%' + @SplitOn + '%', @RowData) + LEN(@SplitOn) , LEN(@RowData))

			SET @Counter += 1
		END

		SET @MyData = LTRIM(RTRIM(@RowData))

		IF LEFT(@MyData, 1)='''' AND RIGHT(@MyData, 1)=''''
		BEGIN
			SET @MyData = Substring(@MyData, 2, LEN(@MyData) - 2)
		END

		IF LTRIM(@MyData) <> ''
			INSERT INTO @ReturnValue ( data )
			SELECT	Data = @MyData;
	END

	RETURN
END


Сообщение было отредактировано: 6 июн 18, 16:44
6 июн 18, 16:38    [21473345]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
Penner, зачем вы притащили ваше (или чьете еще) не относящееся к делу, но, несомненно, ужасное творение?
6 июн 18, 16:45    [21473375]     Ответить | Цитировать Сообщить модератору
 Re: Как данные строки сделать столбцом  [new]
iiyama
Member

Откуда:
Сообщений: 642
Васелина,

Excel-> Сводная таблица->Profit
6 июн 18, 17:59    [21473625]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить