首页 > 解决方案 > 如何将查询从 cognos sql 转换为 t-sql

问题描述

我有一份在 Cognos 上运行的报告,我们正在迁移到 SSRS。Cognos SQL 使用该rank函数。有人可以帮我弄清楚如何在 T-SQL 中编写相同的查询:

rank() over (at "left"(upper(cast_char(TIMESTAMP '2018-04-30 00:00:00.0')), 3), dim_customer.concern_name 
order by XSUM(case when (cast(dim_order_date.order_date_date as date) between 
CAST(:PQ2 AS timestamp) and CAST(:PQ1 AS timestamp)) 
then invoice_lines_fact3.fare_taken else 0 end   
at "left"(upper(cast_char(TIMESTAMP '2018-04-30 00:00:00.0')),3),dim_customer.concern_name,invoice_lines_fact3.inv_line_id  
for "left"(upper(cast_char(TIMESTAMP '2018-04-30 00:00:00.0')),3),dim_customer.concern_name ) desc nulls last)  as  Rank1,`

还有这个 where 子句过滤器:

((cast(dim_order_date.order_date_date as date) between _add_years(cast(TIMESTAMP '2018-04-01 00:00:00.0' as date),(-1)) and CAST(:PQ1 AS timestamp))
   and (((dim_route.AIRLCD in ('CC','AA')) and (dim_route.END_DATE < CAST(:PQ2 AS timestamp))) 
   or (dim_route.END_DATE is NULL)))

标签: tsqlsql-server-2008-r2ssrs-2008-r2cognos-8

解决方案


You rank() 函数在 2008 年可用。

查看您的代码后,您有一个“XSUM”命令。

解决这个问题应该是你的第一个电话点。以下是解决方案的链接(堆栈上)。

将 Cognos 报告转换为 SSRS,XSUM 命令有什么作用?

潜在地,解决此问题将使您的排名功能起作用。


推荐阅读