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可能是正确的,如果可能的话,您应该将数据透视和格式设置留给您的报告层。不过,知道如何在数据库端处理它也很好。