Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Двухмерный отчет   Найти похожие ветки 

 
}|{yk ©   (2004-03-19 17:25) [0]

Получаю я из запроса отчеи вида
LINE---DATE------SUMM
1.1  - 01.01.04 - 15
1.2  - 01.01.04 - 17
1.3  - 01.01.04 - 3
1.4  - 01.01.04 - 0
-------------------
-------------------
1.3  - 12.01.04 - 3
1.4  - 12.01.04 - 0
-------------------
-------------------
1.1  - 31.01.04 - 15
1.2  - 31.01.04 - 17
1.3  - 21.01.04 - 3
1.4  - 31.01.04 - 0
Т.е. сумму по статьям за месяц. Не подскажете как создать перекрестную таблицу типа
----DATE
---- 01.01.04-02.01.04-03.01.04-...
LINE
1.1   15
1.2   17
1.3    3
..
Загвоздка в том что этот отчет нужет в Excel-e (тетки привыкли в нем работать и нечего другого не хотят). Но запрос отрабатываем за 1 секунду (возвращает всего где-то 8000 записей), а вот передача в Excel занимает до 40 секунд.


 
Polevi ©   (2004-03-19 18:17) [1]

у тебя проблемы с передачей данных екселю


 
}|{yk ©   (2004-03-19 18:39) [2]

да. Таблица то формируется но ужасно медленно. Хотя сейчас я подумывю о FastReport, надоело руцями отчеты делать. Использовал XLReport но для серьйозных отчетов он не годиться


 
Mim   (2004-03-20 08:21) [3]

Конечно переходите на fr. Если идти на поводу у дамочек, то ни о какой автоматизации речи быть не может. Передавайть данные на счеты они не просят? :)


 
Oldster   (2004-03-20 09:46) [4]

/*
Для MS SQL Server. Откуда мы взяли этот пример - забыл.
Реализация перекрестного запроса, когда количество столбцов заранее неизвестно
*/
CREATE PROCEDURE sp_CrossTab
@table AS sysname,
@onrows AS nvarchar(128),
@onrowsalias AS sysname = NULL,
@oncols AS nvarchar(128),
@sumcol AS sysname = NULL
AS

DECLARE
@sql AS varchar(8000),
@NEWLINE AS char(1)

SET @NEWLINE = CHAR(10)
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 c" + @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 -- Для отладки
EXEC(@sql)
GO


 Эту процедуру можно поместить в базу данных "MASTER"  MS SQL Server и использовать с любыми таблицами.

Вызов этой хранимой процедуры
 EXEC sp_CrossTab
  @table = #tmpTable,
  @onrows = "ID_Client, Name_Client",
  @oncols = "Schet",
  @sumcol = "Summa"



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
1-1080657541
Noway
2004-03-30 18:39
2004.04.18
задержка


8-1073708570
vidiv
2004-01-10 07:22
2004.04.18
Как загрузить PNG в TBitMap


8-1072425450
ish
2003-12-26 10:57
2004.04.18
3d-графика, где взять компонент


3-1080025357
Лысый
2004-03-23 10:02
2004.04.18
Разработка ИС


1-1080326176
ser_ega
2004-03-26 21:36
2004.04.18
Печать текста!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский