данные в качестве столбцов
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
данные в качестве столбцов
реально ли сделать так, чтобы данные из таблицы в результате запроса были столбцами? вроде пересечением или кросстабом называется такое. как бы это замутить на sql?
Re: данные в качестве столбцов
Поиском пробовал?
Если же ты упёртый, и стандартные методы (на клиенте) получения кросстаба не устраивают - есть и альтернативный способ.
Если же ты упёртый, и стандартные методы (на клиенте) получения кросстаба не устраивают - есть и альтернативный способ.
Re: данные в качестве столбцов
А количество столбцов зарание известно?
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
Re: данные в качестве столбцов
спасибо за инфу) метод на клиенте в принципе устраивает, но стало интересно можно ли sql'м замутить это)WildSery писал(а):Поиском пробовал?
Если же ты упёртый, и стандартные методы (на клиенте) получения кросстаба не устраивают - есть и альтернативный способ.
нет)Gera писал(а):А количество столбцов зарание известно?
Re: данные в качестве столбцов
В чисто академических целях можно реализовать через EXECUTE STATEMENT, что-то вроде этого:но стало интересно можно ли sql'м замутить это)
Код: Выделить всё
CREATE TABLE COLS (COL_ID INT, COL_NAME VARCHAR(100)) -- значиения, преобразуемые в столбцы и их псевдонимы
CREATE TABLE VALS (COL_ID INT, ROW_ID INT, VALUE FLOAT) -- разворачиваемая таблица
INSERT INTO COLS VALUES (1, 'AAA')
INSERT INTO COLS VALUES (2, 'BBB')
INSERT INTO VALS VALUES (1,1,0.1)
INSERT INTO VALS VALUES (2,1,0.2)
INSERT INTO VALS VALUES (2,1,0.3)
INSERT INTO VALS VALUES (2,2,0.4)
EXECUTE BLOCK
DECLARE VARIABLE Par VARCHAR(32000), Col VARCHAR(32000), Sql VARCHAR(32000)
BEGIN
Par = ''
Col = ''
SELECT
:Col = :Col + ',SUM(CASE WHEN COL_ID=' + CAST(COL_ID AS VARCHAR) + N' THEN VALUE END) AS '+COL_NAME,
:Par = :Par + CAST(COL_ID AS VARCHAR) + ','
FROM COLS
Par = LEFT(:Par, LEN(:Par) - 1)
Sql = 'SELECT ROW_ID'+:Col+
'FROM VALS
WHERE COL_ID IN (' + :Par + ')
GROUP BY ROW_ID'
EXECUTE STATEMENT :SQL
END
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
Re: данные в качестве столбцов
спасибо) как попробую отпишусь;)