Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите перевести код чтоб заработало на FB1.5 Плз!!! [D6, FB1.5]


Нулевой ©   (2004-10-16 14:33:00) 

Такое:

SELECT
 MONTH(Date) AS SaleMonth,
 SUM(CASE YEAR(Date)
       WHEN 2001 THEN Amount
       ELSE 0
     END) AS [2001],
 SUM(CASE YEAR(Date)
       WHEN 2002 THEN Amount
       ELSE 0
     END) AS [2002],
 SUM(CASE YEAR(Date)
       WHEN 2003 THEN Amount
       ELSE 0
     END) AS [2003]
FROM Sales
GROUP BY MONTH(Date)
ORDER BY MONTH(Date)
GO


Zacho   (2004-10-16 21:58:00) [1]

Я, например, не помогу. Хотя мог бы, наверное.

Читай http://ln.com.ua/~openxs/articles/smart-questions-ru.html

И кроме того, подумай, почему твой вопрос не вызывает никакого желания помогать.


Нулевой   (2004-10-16 14:44:00) [2]

... http://www.softmatics.ru/sql/10.htm


Нулевой   (2004-10-16 14:34:00) [3]

А ещё -

CREATE PROCEDURE sp_CrossTab
 @table       AS sysname,-- Таблица для построения crosstab отчета
 @onrows      AS nvarchar(128),-- Значение для группировки по строкам
 @onrowsalias AS sysname = NULL,-- Псевдоним для группируемой колонки
 @oncols      AS nvarchar(128),-- Значение для группировки по колонкам
 @sumcol      AS sysname = NULL -- Значение для суммирования
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

-- Шаг 2: Хранение ключей во временной таблице.
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)

-- Шаг 3: Средняя часть строки SQL.
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 N''' + @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

-- Шаг 4: Конец строки SQL.
SET @sql = @sql         + @NEWLINE +
 'FROM ' + @table      + @NEWLINE +
 'GROUP BY ' + @onrows + @NEWLINE +
 'ORDER BY ' + @onrows

SET NOCOUNT OFF
PRINT @sql  + @NEWLINE-- для отладки
EXEC (@sql)
GO


Наверх

Титульная страница Поиск, карта сайта Написать письмо