gpt4 book ai didi

c# - 内部报告所需的复杂小计

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:16 24 4
gpt4 key购买 nike

我需要一个按 MemberName(PersonID) 返回小计的查询,但分为 2 个不同的 ContactTypes(11 & 12 在 IsFaceToFace 下)。下面的查询为我提供了我需要的基本数据,没有任何小计。

我尝试过使用 WITH ROLLUPPARTITION BY 但这些对我来说是新的并且从来没有完全正确地工作过。我确信我需要提供有关表结构的更多信息,但也许不需要。

此外,我的最终目标是在 Excel 2007 中为我们的内部财务团队提供此功能,因此我对任何 解决方案持开放态度。无论是 SQL、LINQ(虽然这使用 2 个数据库)、Reporting Services、Excel 宏、C# 等。此时我只需要它来工作。

我最好的选择是什么?这是当前返回的示例。

ClientFolder MemberName        ContactDate  TimeSpent IsFaceToFace

68933 Collins,Vickie 2010-01-07 0.2 11
68937 Pervin,Jennifer 2010-01-07 0.2 11
68937 Pervin,Jennifer 2010-01-11 0.1 11
68937 Pervin,Jennifer 2010-01-12 0.1 11
69861 Klum,Ronald 2010-01-04 0.3 11
69861 Klum,Ronald 2010-01-04 0.3 11
69861 Klum,Ronald 2010-01-07 0.2 11
69861 Klum,Ronald 2010-01-11 0.2 11
70205 Matamoros,Joellen 2010-01-04 0.5 11
70205 Matamoros,Joellen 2010-01-06 0.8 11
70205 Matamoros,Joellen 2010-01-06 2.4 12
70205 Matamoros,Joellen 2010-01-07 0.7 11
70205 Matamoros,Joellen 2010-01-11 0.2 11
70205 Matamoros,Joellen 2010-01-11 1.0 11
70205 Matamoros,Joellen 2010-01-12 0.3 11



USE MATRIX

SELECT ClientFolder = (select distinct tblApplicationAssociation.PersonApplicationID from Connect.dbo.tblApplicationAssociation where Connect.dbo.tblApplicationAssociation.ApplicationID = 6 AND Connect.dbo.tblApplicationAssociation.PersonID = MATRIX.dbo.tblCaseNotes.PersonID)
,MemberName = (select tblPerson.LastName + ',' + tblPerson.FirstName from Connect.dbo.tblPerson where Connect.dbo.tblPerson.PersonID = MATRIX.dbo.tblCaseNotes.PersonID)
,ContactDate
,TimeSpent = SUM(TimeSpentUnits)
,CASE WHEN ContactTypeID = 3 THEN '12' ELSE '11' END AS IsFaceToFace

FROM tblCaseNotes
LEFT OUTER JOIN tblCaseNoteContactType
ON tblCaseNotes.CaseNoteID = tblCaseNoteContactType.CaseNoteID

WHERE InsertUser = 'pschaller' -- this will be a variable for Current User
AND
ContactDate BETWEEN '01/01/2010' AND '01/31/2010' -- this will be two Date variables

GROUP BY ContactDate, ContactTypeID, PersonID
ORDER BY PersonID, ContactDate, ContactTypeID

最佳答案

如果您想将其保留在 SQL 中,您确实有 2 个选择,我认为这是最快的方法。您可以使用 PARTITION BY,也可以将查询结果插入临时表,然后再次查询它们。使用 Partition By 真正做的就是将您需要的 SQL 语句数从 2 条减少到 1 条,并删除临时表。要使用临时表,只需将上述查询的结果插入其中,然后从中执行 SELECT 并按 PersonID 和 IsFaceToFace 分组。

关于c# - 内部报告所需的复杂小计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com