选择列表

时间:2015-07-31 14:43:17

标签: sql sql-server select group-by aggregate-functions

我正在尝试将Nvarchar列添加到我在结果集中需要的选择列表中。但是当我执行时,我得到了这个错误:

  

列'dbo.SourceEntity.SourceName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

我不需要聚合此列或group by它。如何将此列添加到结果集中?这是我的代码:

SELECT  distinct
la.Limit AS keyfield, 
convert(varchar(100), se.SourceName) AS SourceEntity,   
(la.Limit) AS Limit,
SUM(la.ARLimit) AS LAARLimit,
SUM(la.MTMLimit) AS LAMTMLimit,
SUM(la.Volume) AS LAMaxVolume,
SUM(la.MaxTenor) AS LAMaxTenor, 

SUM(le.ARLimit) AS LEARLimit, 
SUM(le.MTMLimit) AS LEMTMLimit, 
SUM(le.Volume) AS LEMAxVolume, 
SUM(le.MaxTenor) AS LEMaxTenor, SUM(la.ARLimit) + SUM(le.ARLimit) AS [ARLimit], 
SUM(la.MTMLimit) + SUM(le.MTMLimit) AS [MTMLimit], 
SUM(la.Volume) + SUM(le.Volume) AS [Volume], 
SUM(la.MaxTenor) + SUM(le.MaxTenor) AS [MaxTenor]
FROM            
dbo.LimitAllocation AS la 
INNER JOIN

dbo.LimitExtension AS le ON la.Limit = le.Limit AND la.Limit = le.Limit

inner join 

dbo.SourceEntity as se on la.SourceEntity = le.SourceEntity
GROUP BY la.Limit

1 个答案:

答案 0 :(得分:0)

尝试使用此功能,您将在结果集中获得额外的列。

select *,convert(varchar(100), SourceName) AS SourceEntity
from (
  SELECT distinct
    la.Limit AS keyfield, 
    (la.Limit) AS Limit,
    SUM(la.ARLimit) AS LAARLimit,
    SUM(la.MTMLimit) AS LAMTMLimit,
    SUM(la.Volume) AS LAMaxVolume,
    SUM(la.MaxTenor) AS LAMaxTenor, 
    SUM(le.ARLimit) AS LEARLimit, 
    SUM(le.MTMLimit) AS LEMTMLimit, 
    SUM(le.Volume) AS LEMAxVolume, 
    SUM(le.MaxTenor) AS LEMaxTenor,
    SUM(la.ARLimit) + SUM(le.ARLimit) AS [ARLimit], 
    SUM(la.MTMLimit) + SUM(le.MTMLimit) AS [MTMLimit], 
    SUM(la.Volume) + SUM(le.Volume) AS [Volume], 
    SUM(la.MaxTenor) + SUM(le.MaxTenor) AS [MaxTenor]
  FROM dbo.LimitAllocation AS la 
  INNER JOIN dbo.LimitExtension AS le ON la.Limit = le.Limit AND la.Limit = le.Limit
  inner join dbo.SourceEntity as se on la.SourceEntity = le.SourceEntity
  GROUP BY la.Limit
) as p;