我在cognos报告中生成了以下查询。
我的问题是我需要它工作,在sqlserver中使用相同的逻辑/过滤器。下面的过滤器(cognos语法)能以同样的方式生成吗 WHERE
在sql server中?
select
*
from
dbo.ia_code
group by
client__iacode.ia_code,
client__iacode.ia_short_descr
------ here my problem
filter
(rank() over ( at client__iacode.ia_code order by XCOUNT(client.client_code at client__iacode.ia_code,client.client_id for client__iacode.ia_code ) desc nulls last) <= 25) and
(RCOUNT(rank() over ( at client__iacode.ia_code order by XCOUNT(client_document.client_document_id for client__iacode.ia_code ) desc nulls last) at client__iacode.ia_code order by rank() over ( at client__iacode.ia_code order by XCOUNT(client_document.client_document_id for client__iacode.ia_code ) desc nulls last) asc,client__iacode.ia_code asc,client__iacode.ia_short_descr asc ) <= 25)
任何帮助都将不胜感激。
2条答案
按热度按时间hts6caw31#
使用
where
筛选前分组group by只用于如下查询中的聚合函数调用
用于查询中的过滤器功能
请阅读以下说明,了解如何使用:
地点:学校
分组依据:w3shoolcs
拥有:w3shoolcs
最后:我试着把你的代码改成SQLServer,但我现在不想把这段代码删掉。请添加表格样本数据和输出样本。
clj7thdc2#
首先尝试将查询(或数据源)的“汇总处理”属性更改为“数据库”。这将有助于将扩展聚合函数(xcount等)转换为本机sql。还要检查“usesqlparameters”属性并将其设置为“literal”,看看这是否有助于处理原生sql中的参数。完成这些操作后,将新生成的本机查询粘贴到此处。
“属性”窗口的屏幕截图
这是我回答下面这个问题的一个片段。阅读更多的细节,并遵循这个问题,因为它可能有助于你的问题了。
将包含筛选器的IBMCognosSQL转换为MicrosoftSQLServer查询