【问题标题】:T-SQL count number of fields associated with a GUID and get sum of fields from another table associated with the same GUIDsT-SQL 计算与 GUID 关联的字段数,并从与相同 GUID 关联的另一个表中获取字段总和
【发布时间】:2013-09-26 05:15:55
【问题描述】:

编辑: 大家好,

我想通了

select LI.ProjectId, count(*) as numLineItems
into #temp
from dbo.SQLLineItems as LI
group by LI.ProjectId
having COUNT(*) < =200

select numLineItems, count(*), SUM(PT.GrandTotalSell) from
#temp
inner join dbo.SQLProjectTotals as PT
on PT.ProjectId = #temp.ProjectId
group by numLineItems;

感谢您的帮助。


我有两个包含项目信息的表。表 1 包含 LineItems,每个 LineItems 都有一个对该表唯一的 GUID 和 ProjectID 的 GUID。每个 ProjectID 都有重复项,因为一个 ProjectID 可以有多个 LineItems。

表 2 通过项目 ID 链接到表 1,并且 GUID 在该表中是唯一的。表 2 还包含每个项目的价格。

我想按 LineItem 的数量对项目进行细分,看看有多少项目是 1、2、3、4... 项项目。

我写了一个有效的查询:

use FieldedProjects;

select LI.ProjectId, count(*) as numLineItems
into #temp
from dbo.SQLLineItems as LI
group by LI.ProjectId
having COUNT(*) < =15

select numLineItems, count(*) from
#temp
group by numLineItems;

但现在我想修改它以显示总价格。所以1项目的项目总价是100,2项目的项目是300,...

我在想类似的事情

use FieldedProjects;

select LI.ProjectId, count(*) as numLineItems, SUM(PT.GrandTotalSell) as projectTotal
into #temp
from dbo.SQLLineItems as LI
inner join dbo.SQLProjectTotals as PT
on LI.ProjectID = PT.ProjectID
group by LI.ProjectId
having COUNT(*) < =15

select numLineItems, count(*), projectTotal from
#temp
group by numLineItems;

但它给了我一个错误,因为 projectTotal 不包含在聚合函数中。应该是

select numLineItems, count(*), SUM(projectTotal) from

【问题讨论】:

  • group by numLineItems, projectTotal -- 可以吗?
  • 假设您有三个 2 项项目,其中 10、20、30 作为 projectTotals。在您的结果中,您希望看到一行 2 作为 [2-item]、3 作为 countOf2ItemProjects 和 ???您希望将这些 projectTotals 再次相加还是以逗号分隔数字的字符串表示形式?
  • 我想要一个项目总数的总和,以及它旁边的一列,它是每个被计算项目的 GrandTotalSell 总和。那么 n 个项目的数量是多少,所有 n 个项目的 GrandTotalSells 的总和是多少?我会尝试罗马的答案,看看会发生什么。也可以简单到按 numLineItems 分组,projectTotal

标签: sql sql-server tsql ssms


【解决方案1】:
select *
from dbo.SQLProjectTotals as PT
cross apply
(
    select count(*)
    from dbo.SQLLineItems LI
    where LI.ProjectID = PT.ProjectID
) items(Count)
where items.Count <= 15

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多