【发布时间】:2011-08-18 14:41:14
【问题描述】:
我正在尝试更新 Microsoft 报告。它的作用是写出有多少客户被排除在转换过程之外以及出于什么原因。目前,该程序将所有已删除的客户端写回服务器,然后对其进行查询以用结果填充专业表。
这是当前查询:
SELECT DeletedClients.Reason,
COUNT(DeletedClients.Reason) AS Number,
CAST(CAST(COUNT(DeletedClients.Reason) AS float)
/ CAST(t.Total AS float)
* 100 AS numeric(4, 1)) AS percentage
FROM DeletedClients CROSS JOIN
(SELECT COUNT(*) AS Total
FROM DeletedClients AS DeletedClients_1
WHERE (ClinicID = @ClinicID)) AS t
WHERE (DeletedClients.ClinicID = @ClinicID)
AND (DeletedClients.TotalsIdent = @ident)
GROUP BY DeletedClients.Reason, t.Total
ORDER BY Number DESC
我想要做的不是将DeletedClients 写入服务器,因为它已经作为 DataTable 存在于我的程序中的内存中,它只会减慢报告速度并用我们不需要保存的信息填充数据库.
我的主要问题是:
如何查询数据表以在内存中创建一个新的数据表,其结果与我写出 SQL 服务器并使用上面的查询将其读回一样?
或
如何在 Microsoft Reports 中对 Tablix 中的项目执行 group by 子句以将 =Fields!Reason.Value =Fields!Number.Value =Fields!percentage.Value 转换为类似于上述查询返回的结果?
【问题讨论】:
-
这里有更多示例 - dotnetperls.com/datatable-select Select("Size >= 230 AND Sex = 'm'"); Select("日期 > #6/1/2001#");
标签: c# .net .net-4.0 reporting-services