
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.07.2002, 08:02:16
|
|||
|---|---|---|---|
|
|||
MSSQL 2K - перекрестный запрос (аналог TRANSFORM в Аccess) бывает? |
|||
|
#18+
Подскажите чайнику плиз: в MS Access бывает "перекрестный запрос" для постоения шахматки: например таблица [Table1] ID Rw Cl Dt ----------------- 1 r1 c1 wew 2 r2 c1 erer 3 r2 c2 tyy Здесь ID - первичный ключ-счетчик, Rw - код строки, Cl - код столбца, Dt - данные которые нужно вывести в шахматке Перекрестный запрос ацесса: TRANSFORM First(Table1.Dt) AS [Значение] SELECT Table1.Rw FROM Table1 GROUP BY Table1.Rw PIVOT Table1.Cl; Даст чтото вроде Rw c1 c2 ------------ r1 wew NULL r2 erer tyy Вопрос: как тоже самое реализовать в MSSQL? только не предлагайте MDX, тут [Table1] - результат довольно сложной выборки с параметрами (на практике будет stored procedure сложного отбора, возвращающая рекордсет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 08:27:38
|
|||
|---|---|---|---|
|
|||
MSSQL 2K - перекрестный запрос (аналог TRANSFORM в Аccess) бывает? |
|||
|
#18+
Check out GROUPING and CUBE in BOL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 18:25:05
|
|||
|---|---|---|---|
MSSQL 2K - перекрестный запрос (аналог TRANSFORM в Аccess) бывает? |
|||
|
#18+
Бывает. Запусти в гугле RAC Crosstab query ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2002, 07:20:08
|
|||
|---|---|---|---|
|
|||
MSSQL 2K - перекрестный запрос (аналог TRANSFORM в Аccess) бывает? |
|||
|
#18+
CREATE PROC sp_CrossTab @table AS sysname, -- Table to crosstab @onrows AS nvarchar(128), -- Grouping key values (on rows) @onrowsalias AS sysname = NULL, -- Alias for grouping column @oncols AS nvarchar(128), -- Destination columns (on columns) @sumcol AS sysname = NULL -- Data cells AS set nocount on DECLARE @sql AS varchar(8000), @NEWLINE AS char(1) SET @NEWLINE = CHAR(10) -- ШАГ 1: начало строки SQL SET @sql = "SELECT " + @NEWLINE + " " + @onrows + CASE WHEN @onrowsalias IS NOT NULL THEN " AS " + @onrowsalias ELSE "" END CREATE TABLE #keys(keyvalue nvarchar(100) NOT NULL PRIMARY KEY) DECLARE @keyssql AS varchar(1000) SET @keyssql = "INSERT INTO #keys " + "SELECT DISTINCT CAST(" + @oncols + " AS nvarchar(100)) " + "FROM " + @table EXEC (@keyssql) DECLARE @key AS nvarchar(100) SELECT @key = MIN(keyvalue) FROM #keys WHILE @key IS NOT NULL BEGIN SET @sql = @sql + "," + @NEWLINE + " SUM(CASE CAST(" + @oncols + " AS nvarchar(100))" + @NEWLINE + " WHEN """ + @key + """ THEN " + CASE WHEN @sumcol IS NULL THEN "1" ELSE @sumcol END + @NEWLINE + " ELSE 0" + @NEWLINE + " END) AS [" + @key + "]" SELECT @key = MIN(keyvalue) FROM #keys WHERE keyvalue > @key END SET @sql = @sql + @NEWLINE + "FROM " + @table + @NEWLINE + "GROUP BY " + @onrows + @NEWLINE + "ORDER BY " + @onrows PRINT @sql + @NEWLINE -- For debug exec (@sql) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.09.2002, 11:25:36
|
|||
|---|---|---|---|
|
|||
MSSQL 2K - перекрестный запрос (аналог TRANSFORM в Аccess) бывает? |
|||
|
#18+
А можно еще один вопрос? sp_CrossTab у меня проблема @oncols идет в типе smalldatetime, получается много значений как в эту процедуру ввести диапазон дат и как вставить конвертацию в стиль dd.mm.yy? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1820112]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 370ms |

| 0 / 0 |
