Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何创建(临时?)存储过程来帮助创建摘要视图?_Sql Server_Tsql_Stored Procedures_Views_Pivot Table - Fatal编程技术网

Sql server 如何创建(临时?)存储过程来帮助创建摘要视图?

Sql server 如何创建(临时?)存储过程来帮助创建摘要视图?,sql-server,tsql,stored-procedures,views,pivot-table,Sql Server,Tsql,Stored Procedures,Views,Pivot Table,我的视图表如下所示: SELECT * FROM #mytempfunc('Total') UNION SELECT * FROM #mytempfunc('ToBePaid') UNION ... 我开始创建一个视图,按每种货币的状态进行汇总: WITH C AS (SELECT * FROM CampaignsPublisherReportSummary) SELECT 'Total' T, SUM(CASE WHEN PayCurrency='USD' THEN Tota

我的视图表如下所示:

SELECT * FROM #mytempfunc('Total')
UNION SELECT * FROM #mytempfunc('ToBePaid')
UNION ...
我开始创建一个视图,按每种货币的状态进行汇总:

WITH C AS (SELECT * FROM CampaignsPublisherReportSummary)
SELECT
    'Total' T,
    SUM(CASE WHEN PayCurrency='USD' THEN Total END) USD,
    SUM(CASE WHEN PayCurrency='EUR' THEN Total END) EUR,
    SUM(CASE WHEN PayCurrency='GBP' THEN Total END) GBP,
    SUM(CASE WHEN PayCurrency='AUD' THEN Total END) AUD
FROM C
UNION
SELECT
    'ToBePaid' T,
    SUM(CASE WHEN PayCurrency='USD' THEN ToBePaid END) USD,
    SUM(CASE WHEN PayCurrency='EUR' THEN ToBePaid END) EUR,
    SUM(CASE WHEN PayCurrency='GBP' THEN ToBePaid END) GBP,
    SUM(CASE WHEN PayCurrency='AUD' THEN ToBePaid END) AUD
FROM C
GO
我可以完成并获得我想要的,通过复制/粘贴其他状态的未验证、已验证等,但我的程序员希望有某种函数,该函数采用状态名称并运行模板化版本的查询

问题:我可以这样做吗?或者有没有其他更好的方法来分解我丢失的信息

更新:我的目标是有这样的东西:

SELECT * FROM #mytempfunc('Total')
UNION SELECT * FROM #mytempfunc('ToBePaid')
UNION ...

我不完全清楚你在问什么;您需要动态SQL来按字符串值选择字段。但是,如果您的度量列表是静态的,并且应该是静态的,那么您可以通过UNPIVOT获得所需的,或者至少稍微接近:


我不太确定你想做什么。您正在尝试动态生成货币列吗?如果是这样的话,您可以执行“从[current_table]中选择不同的paycurrency”,执行游标/循环,并动态构建汇总总金额/tobepaid金额的查询。感谢您的反馈-可能我正在尝试将其复杂化,而不是将其复杂化。不管怎样,我确实更新了问题,并把我的设想作为目标放在这里……如果这个查询的结果是以SSR或类似的方式创建一个报告,让报告工具来处理分组和总数。@Tony,谢谢你的提示-你认为简单的报告在SSR的学习曲线方面很容易获得吗?你知道一个好的基础起点吗?我已经安装了它,只是从来没有启动过它-我与SSI的最初接触让我很了解,也就是说,作为一名C程序员,由于缺少人员,我试图承担一些DBA的责任,有时我觉得自己像一条离开水的鱼。SSR不太难学,选择Microsoft SQL Server 2008 Reporting Services的分步拷贝或专业版Microsoft SQL Server 2008 Reporting Services,您将很快启动并运行。既然你已经支付了工具的费用,你也可以使用它。但是,请注意,SSRS报告并非设计为在没有一些安全问题的情况下直接显示在网站上。希望将来的版本能解决这个问题。很高兴能提供帮助!请注意,上面的@Tony可能是正确的,如果可能的话,您应该将数据透视和格式设置留给您的报告层。不过,知道如何在数据库端处理它也很好。