Главная страница
    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.03 c
3-1080125220
JohnS
2004-03-24 13:47
2004.04.18
Paradox and поле с именем DATE


1-1080341683
ceval
2004-03-27 01:54
2004.04.18
Подскажите как программно в RadioGroup написать название


1-1080743581
Фдуч
2004-03-31 18:33
2004.04.18
Меню в MDI приложении


3-1079942830
ikondakov
2004-03-22 11:07
2004.04.18
Синхронизация нескольких таблиц .dbf


1-1080821800
Alex-21
2004-04-01 16:16
2004.04.18
Мерцание в CustomControl e





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский