【发布时间】:2016-05-18 09:05:23
【问题描述】:
我最近开始使用 BIRT 在 Java\SQL Server 应用程序中进行一些非常简单的报告。现在我有一个动态 sql stmt,我正试图在 BIRT 上的 DataSet 中使用(对不起我的英语我是 Frensh)问题是 BIRT 无法创建数据集,我没有找到此报告的解决方案. birt告诉我sql server does not return sql statement does not return a ResultSet object. SQL错误#1,我也想知道我们是否可以在birt中使用sql变量来创建我们的数据集 这是我的 sql 查询:
DECLARE @ListeAffaires TABLE(Nom_APPEL nvarchar(MAX))
INSERT INTO @ListeAffaires(Nom_APPEL)
SELECT DISTINCT AF_NOMAPPEL
FROM F_AFFAIRES INNER JOIN T_P_SOCIETE ON AF_CODE_SOCIETE = SOC_CODE
WHERE SOC_CODE = 'RUS01'
declare @AffairesChaine NVARCHAR(MAX)
SET @AffairesChaine = STUFF(
( SELECT distinct ',ISNULL(' + QUOTENAME(AF_NOMAPPEL) + ', ''0'') ' + QUOTENAME(AF_NOMAPPEL)
FROM F_AFFAIRES INNER JOIN T_P_SOCIETE ON AF_CODE_SOCIETE = SOC_CODE
INNER JOIN VUE_VALORISATION_TEMPS_PASSES ON VTPS_CODE_AFFAIRE = AF_CODE_AFFAIRE
WHERE SOC_CODE = 'RUS01' AND VTPS_date_FICHE >= '02/11/2015'
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),1,1,'')
DECLARE @AffairesChaines NVARCHAR(MAX)
SET @AffairesChaines = ''
SELECT @AffairesChaines = @AffairesChaines +'['+ Nom_APPEL + '],' FROM @ListeAffaires
SET @AffairesChaines = LEFT (@AffairesChaines, LEN(@AffairesChaines) - 1)
DECLARE @sqlCommand varchar(MAX)
SET @sqlCommand = 'DECLARE @SYNTHESETEMPS TABLE ( VTPS_CODE_COLLAB varchar(250)
, VTPS_NOM_COLLAB varchar(250)
, VTPS_PRENOM_COLLAB varchar(250)
, TSRV_LIBELLE varchar(250)
, VTPS_COL_ALPHANUM01 varchar(10)
, AF_NOMAPPEL NVARCHAR(MAX)
, VTPS_DUREE float(24)
)
INSERT INTO @SYNTHESETEMPS (
VTPS_CODE_COLLAB
, VTPS_NOM_COLLAB
, VTPS_PRENOM_COLLAB
, TSRV_LIBELLE
, VTPS_COL_ALPHANUM01
, AF_NOMAPPEL
, VTPS_DUREE
)
SELECT VTPS_CODE_COLLAB
, VTPS_NOM_COLLAB
, VTPS_PRENOM_COLLAB
, TSRV_LIBELLE
, VTPS_COL_ALPHANUM01
, AF_NOMAPPEL
, VTPS_DUREE
FROM VUE_VALORISATION_TEMPS_PASSES
INNER JOIN F_P_COLLABORATEUR ON VTPS_CODE_COLLAB = CLB_CODE
INNER JOIN F_AFFAIRES ON VTPS_CODE_AFFAIRE = AF_CODE_AFFAIRE
INNER JOIN T_COL_SERVICE ON CLB_TSRV_IDENT = TSRV_IDENT
INNER JOIN T_P_SOCIETE ON AF_CODE_SOCIETE = SOC_CODE
WHERE SOC_CODE = ''RUS01'' AND VTPS_date_FICHE >= ''02/11/2015''
SELECT VTPS_NOM_COLLAB +'' '' + VTPS_PRENOM_COLLAB AS "Remaining hours"
, TSRV_LIBELLE AS "Service"
, VTPS_COL_ALPHANUM01 AS "Categories"
,'+ @AffairesChaine +'
FROM @SYNTHESETEMPS
PIVOT (SUM(VTPS_DUREE)
FOR
AF_NOMAPPEL IN ('+@AffairesChaines+')) PVT '
EXEC(@sqlCommand)
【问题讨论】:
标签: sql sql-server eclipse birt