Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизПомогите перевести код чтоб заработало на FB1.5 Плз!!! Найти похожие ветки
← →
Нулевой © (2004-10-16 14:33) [0]Такое:
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
← →
Нулевой © (2004-10-16 14:34) [1]А ещё -
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
← →
Нулевой © (2004-10-16 14:44) [2]...http://www.softmatics.ru/sql/10.htm
← →
Zacho © (2004-10-16 21:58) [3]Я, например, не помогу. Хотя мог бы, наверное.
Читай http://ln.com.ua/~openxs/articles/smart-questions-ru.html
И кроме того, подумай, почему твой вопрос не вызывает никакого желания помогать.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c