0

我的表中有三列,Contract_number,RevenueCust_name。我想SUM(Revenue),同时按Contract_number分组,以获得该合同的总收入。在此旁边,我想显示Cust_name以显示哪个客户在该合同下。SQL Server:聚合时,为特定列选择单个行的值

问题是在任何给定合同下有多个Cust_name值。合同下的Cust_name值都非常相似,我不在乎它们中的哪一个被使用,我只想显示其中的一个。

如果我使用类似MIN(Cust_name)的东西,我会丢失数据,如果我的确做了GROUP BY Cust_name,那么这些值将被拆分成多行。

有没有办法为每个结果添加一个Cust_name值,同时保持Contract_numberRevenue聚合函数相同?

+0

使用MAX(CUST_NAME) – Dimitri

+0

更像三列,而行 – maSTAShuFu

+1

我想你最好**正常化**你的餐桌,为什么你有一个单一的Contract_Number有很多类似的Cust_Names? –

回答

1

使用MIN(CUST_NAME)或MAX(CUST_NAME)用SUM(收入),那么GROUP BY Contract_number一起

SELECT Contract_number, 
     SUM(Revenue), 
     MIN(Cust_Name) -- or MAX(Cust_Name) 
    FROM table 
GROUP BY Contract_number 
+1

谢谢,这工作。我的查询实际上也包含一个子查询。当我在子查询中使用MIN时,我失去了结果,但是当我只将主查询用于完美时。谢谢你费迪南德! – esafresa

相关问题