如何在SQL Server的存储过程的Crystal Report中使用像Switch语句一样的语句 [英] how to use like Switch statement in crystal report in Stored Procedure of sql server

查看:174
本文介绍了如何在SQL Server的存储过程的Crystal Report中使用像Switch语句一样的语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我正在使用Parameter和S.P.制作Crystal报表.
现在,Crystal报表中有两个参数分别为Company Name和Days.

当我选择一个公司时,该公司的数据库将在S.P.中执行.

我使用如下查询:

Hello To All,

I am making a Crystal report with the use of Parameter and S.P.
now, there is two parameter in Crystal report as Company Name and Days.

When i Select one company, the database of that company will be executed in S.P.

i use the query like below:

SELECT     ''FMCPL''as company, itmast.itcode, sl.itname AS itemname, SUM(sl.qtyin) AS qtyin, SUM(sl.qtyout) AS qtyout, SUM(sl.qtyin)- SUM(sl.qtyout) as qty, sl.unit AS unit, MAX(sl.docdt) AS maxdt, munim002.dbo.itmast.material, 
                      munim002.dbo.itgroup.dtldesc, munim002.dbo.gdmast.gdname
FROM         munim002.dbo.StockLederView sl INNER JOIN
                      munim002.dbo.itmast ON sl.itcode = munim002.dbo.itmast.itcode INNER JOIN
                      munim002.dbo.itgroup ON munim002.dbo.itmast.itgroup = munim002.dbo.itgroup.code INNER JOIN
                      munim002.dbo.gdmast ON sl.gdcode = munim002.dbo.gdmast.gdcode
GROUP BY sl.itname, sl.unit, munim002.dbo.itmast.material, munim002.dbo.itgroup.dtldesc, munim002.dbo.gdmast.gdname
HAVING      SUM(sl.qtyin)- SUM(sl.qtyout) > 0 and (MAX(sl.DOCdt) <= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE() - @dys)))




数据库将根据公司的选择参数自动更改.

所以,请帮助我...


谢谢和问候...
Mitesh




it databas will automatically change as per the selection parameter of company.

so,please help me...


Thanks and Regards...
Mitesh

推荐答案

请尝试以下操作

Please try this

declare @dbname nvarchar(50)
DECLARE @EXECQ AS VARCHAR(MAX)

set @dbname=''

if @comapny='companyname'
Begin
set @dbname='dbname'
End


SET @EXECQ='SELECT '''+@comapny+''' as company, sl.itname AS itemname, SUM(sl.qtyin) AS qtyin, SUM(sl.qtyout) AS qtyout, SUM(sl.qtyin)- SUM(sl.qtyout) as qty, sl.unit AS unit, MAX(sl.docdt) AS maxdt, ' + @dbname + '.dbo.itmast.material,
                      ' + @dbname + '.dbo.itgroup.dtldesc, ' + @dbname + '.dbo.gdmast.gdname
FROM         ' + @dbname + '.dbo.StockLederView sl INNER JOIN
                      ' + @dbname + '.dbo.itmast ON sl.itcode = ' + @dbname + '.dbo.itmast.itcode INNER JOIN
                      ' + @dbname + '.dbo.itgroup ON ' + @dbname + '.dbo.itmast.itgroup = ' + @dbname + '.dbo.itgroup.code INNER JOIN
                      ' + @dbname + '.dbo.gdmast ON sl.gdcode = ' + @dbname + '.dbo.gdmast.gdcode
GROUP BY sl.itname, sl.unit, ' + @dbname + '.dbo.itmast.material, ' + @dbname + '.dbo.itgroup.dtldesc, ' + @dbname + '.dbo.gdmast.gdname
HAVING      SUM(sl.qtyin)- SUM(sl.qtyout) > 0 and (MAX(sl.DOCdt) <= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE() - @dys)))

ORDER BY sl.itname'
--print @EXECQ
Exec (@ExecQ)



谢谢



Thanks


这篇关于如何在SQL Server的存储过程的Crystal Report中使用像Switch语句一样的语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆