㈠ sql语句中交叉报表的使用
DECLARE@sNVARCHAR(4000)
SELECT@s=ISNULL(@s+',','')+QUOTENAME(标志)
FROM表
---行列转换
DECLARE@SQLNVARCHAR(4000)
SELECT@SQL='
SELECT*
FROM表(带有转换标志)PIVOT(SUM(实际需要字段)
for[标志]in('+@s+')
)A'
EXEC(@SQL)
㈡ 怎么使用Excel提取sql server数据库数据,自动生成报表求大神解答,万分感谢。
你可以先设计一个视图View 就是你报表需要的额数据 然后导出数据到excel
㈢ sql动态列 问题 请教一下高手,怎么把表一,用sql语句做出第二种动态列的报表呢
你这个是交叉表,不要想着用动态列来实现.
动态列是增加列,不会改变记录数.
交叉表会增列,同时减少记录数.
㈣ sqlserver 统计报表的 sql语句怎么写
--动态语句
declare@sqlvarchar(8000)
select@sql=isnull(@sql+'],[','')+NAMEfromT_CSDN_ONEgroupbyNAME
set@sql='['+@sql+']'
EXEC('select*from(select*fromT_CSDN_ONE)apivot(SUM(ISNULL(MONERY,0)forNAMEin('+@sql+'))b')
㈤ 如何在水晶报表中实现SQL 查询
给你一个例子 基本可以传递参数 到水晶报表 可以查询 并且可以将参数字段显示为你需要的值
以前采用vb6做的动态传递水晶报表参数字段,存在一个缺陷就是在设计水晶报表的时候没有按照注释的那里写的(直接拖参数字段到预览的界面)就不会出现水晶报表提示要输入离散值的消息框。其实也不完全是这样的,有时我按照这种方式操作仍然有这个输入离散值消息框的提示,具体是什么原因造成的还不是很清楚,估计开发水晶报表的明白内部机制的原因,我只想能顺畅的使用就可以了,可出现不相关的输入提示就直接影响到客户使用程序。
我在做DotNet2005时用的是水晶报表10,在传递参数后。有加入了设置显示报表控件的参数对象集合为传递的参数值【CRViewer91.ParameterFieldInfo = m_Report.ParameterFields 】运行程序就没有这个输入离散值的提示。vb6使用水晶报表9.0不知道加入这个设置是否能解决问题。暂时我还没有条件测试主要是计算机上没有安装水晶报表9,不过也是一种解决这个问题的办法。先在这里保存起来,待有条件了测试下,没有这条语句可能在设计报表rpt文件的时候和程序动态调用可就要来回的测试了 。 哈~~~~~~
Private Sub DisplayReport1()
'' ==========================================================
' 开发人员:段利庆
' 编写时间:2008-09-01
' 过程名称:DisplayReport
' 参数说明:
' 功能说明:动态载入水晶报表文件(*.rpt)显示打印预览
'
' 其他说明:程序采用的是Crystal Reports 9.1版本
' 工程引用:Crystal Reports 9 ActiveX Designer Design and Runtime Library
' 控件:CRViewer91
'
'
'' ==========================================================
'*中央错误处理
On Error GoTo PROC_ERR
Dim m_Application As New CRAXDDRT.Application
Dim m_Report As CRAXDDRT.Report
Dim strSQL As String
strSQL = "SELECT * FROM 视图_收费_计量仪表 "
Dim strRptPath As String
strRptPath = App.Path & "\Crystal_RPT_Para\Sell_Meter.rpt"
Debug.Print "strRptPath:" & strRptPath
Set m_Report = Nothing
Set m_Report = m_Application.OpenReport(strRptPath, 1)
'*防止弹出水晶报表数据库登录对话框
m_Report.Database.Tables.Item(1).TestConnectivity
m_Report.Database.Tables.Item(1).ConnectBufferString = objdata.ConnectionString
m_Report.SQLQueryString = strSQL
'****************************************************
'*参数字段传递参数
'*
'*搞了2天了终于找到原因了 08-09-03
'*1.在新建一个参数字段,一定要直接拖放到预览里面
'* 否则拖到设计里面就要弹出输入离散值的消息框
'*
'*2.GetItemByName("MyParaT") 参数是参数字段的名称
'*
m_Report.DiscardSavedData
m_Report.ParameterFields.GetItemByName("MyParaT").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("MyParaT").AddCurrentValue (Text1.Text)
m_Report.ParameterFields.GetItemByName("k1").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("k1").AddCurrentValue (Text1.Text)
m_Report.ParameterFields.GetItemByName("k2").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("k2").AddCurrentValue (Text1.Text)
'*-----------------------------------------------------
'* 以下这句是否能彻底解决弹出离散值输入框问题
'*是根据vb2005 Crystal Report10 顺畅的处理结果得出的
'*2009-08-26
'CRViewer91.ParameterFieldInfo = m_Report.ParameterFields
'*传递的对象 用下面的语句
'*Set CRViewer91.ParameterFieldInfo = m_Report.ParameterFields
'*-----------------------------------------------------
'****************************************************
CRViewer91.DisplayGroupTree = False
CRViewer91.ReportSource = m_Report
CRViewer91.Zoom 1
CRViewer91.ViewReport
'*结束子程序
PROC_EXIT:
Exit Sub
'*错误处理,显示出错信息
PROC_ERR:
MsgBox " ErrNumber: " & Err.Number & vbCrLf & _
"ErrDescription: " & Err.Description & vbCrLf & _
" Mole: " & Me.Caption & vbCrLf & _
" Procere: " & "DisplayReport"
GoTo PROC_EXIT
End Sub
㈥ 求SQL动态表格删除语句
你应该点击删除按钮后,记录要删除的记录的JobfairID、ComId或者JobID中能够唯一确定要删除记录的那个Id,譬如JobId,然后在存储过程中增加诸如:
delete from JOBFAIR_ORDER_INFO where JobId = @JobId
即可。
㈦ sql的数据在html控件的表格显示!!
你是指在sql查询的时候动态生成表格,还是只是将查好的datatable中的数据传到前台变成表格呢,
如果是用sql动态生成表格,建议用存储过程写:设置一个@Content变量。例:if(@Mdpcount>0)
begin
set @EmailContent='<Table border=1><tr><td>序号</td><td>配件编号</td><td>配件名称</td><td>规格</td><td>库存数量</td><td>安全库存</td><td>供应商</td></tr>'
end
while(@Mdpcount>0)
begin
select @num=@num+1,@EmailContent=@EmailContent+'<tr><td>'+cast( @num as varchar(10))+'</td><td>'+ isnull(Mdp_sn,'') +'</td><td>' + isnull(Mdp_name,'') +'</td><td>'+ isnull(Mdp_spec,'') +'</td><td>'+isnull(cast(Mdp_stock as varchar(20)),'')+'</td><td>' + isnull(cast(Mdp_SafetyStock as varchar(20)),'')+ '</td><td>' +isnull(Mdp_traderName,'') + '</td></tr>'
from #tempMdpInfor where autoID=@Mdpcount
set @Mdpcount=@Mdpcount-1
end
if(@Mdpcount=0 )
begin
if(@Indexcount=0)
begin
set @EmailContent=@EmailContent+'</Table>'
end
如果是查好的数据,直接在后台画表格,放到隐藏控件里,前台js获取就行了
㈧ 如何用FastReport制作动态报表
没有用fastreport做过,倒是用finereport做过动态表,同为java报表软件,原理上应该是差不多的吧。
在定义数据集时,通过if函数来判断参数的值从而来实现调用不同的数据表,如直接将SQL语言定义成:SELECT * FROM ${if(aa=1,'订单','订单1')},即若参数aa=1时,查询的是订单表,若aa!=1时,查询的是订单1表。
1、打开模板
2、修改数据集
将数据集修改为SELECT * FROM 订单 ${Condition}
3、修改参数界面
将参数界面的控件名称修改为condition即可
4、效果查看
保存模板点击分页预览,输入动态的查询条件如:where 货主地区='西南',便可以获取货主地区为西南的数据了,效果如下图:
㈨ 怎么样把sql查询的信息生成报表
SELECT YEAR(日期字段) 年度,SUM(CASE WHEN MONTH(日期字段) =1 THEN 统计的字段 ELSE 0 END) 一月,
SUM(CASE WHEN MONTH(日期字段) =2 THEN 统计的字段 ELSE 0 END) 二月,
SUM(CASE WHEN MONTH(日期字段) =3 THEN 统计的字段 ELSE 0 END) 三月,
SUM(CASE WHEN MONTH(日期字段) =4 THEN 统计的字段 ELSE 0 END) 四月,
SUM(CASE WHEN MONTH(日期字段) =5 THEN 统计的字段 ELSE 0 END) 五月,
SUM(CASE WHEN MONTH(日期字段) =6 THEN 统计的字段 ELSE 0 END) 六月,
SUM(CASE WHEN MONTH(日期字段) =7 THEN 统计的字段 ELSE 0 END) 七月,
SUM(CASE WHEN MONTH(日期字段) =8 THEN 统计的字段 ELSE 0 END) 八月,
SUM(CASE WHEN MONTH(日期字段) =9 THEN 统计的字段 ELSE 0 END) 九月,
SUM(CASE WHEN MONTH(日期字段) =10 THEN 统计的字段 ELSE 0 END) 十月,
SUM(CASE WHEN MONTH(日期字段) =11 THEN 统计的字段 ELSE 0 END) 十一月,
SUM(CASE WHEN MONTH(日期字段) =12 THEN 统计的字段 ELSE 0 END) 十二月,
FROM 表
GROUP BY YEAR(日期字段)
㈩ mysql怎样设置用sql语句查询出的报表定时自动导出
mysql -h主机IP -u用户名 -p密码 -e "SQL语句" 库的名字 > 文件存放路径/文件名.xls
例如:mysql -h192.168.1.1 -uroot -p123456 -e "select * from e_iclass_areas" test > /root/test/test.xls
上面是语句,然后把上面的语句写成一个脚本,给一个可执行权限,然后在通过crontab做一个定时任务即可
脚本内容:
#!/bin/bash
mysql -h192.168.1.1 -uroot -p123456 -e "select * from e_iclass_areas" test > /root/test/test.xls
假设脚本名称是test.sh,所在路径是/root/test/test.sh,则给其授权
chmod +x /root/test/test.sh
然后做定时任务,定时执行此脚本,比如每天晚上2点执行:
crontab
0 2 0 0 0 /root/test/test.sh