如何在Sql Server中使用Group By和动态SQL查询

时间:2012-10-31 10:01:13

标签: sql-server

我有一个获取某些信息的程序。我已经添加了一个字段,它可以获得多少个帐户。为此,我使用了“Count”聚合函数。既然已经添加了Count,它也应该具有按功能分组。我正在尝试将Group By添加到它,但无法找到使用动态SQL分组的确切语法。以下是与过程一起使用的查询:

DECLARE @SQL  nvarchar(max),@paramlist nvarchar(max) 
SELECT @SQL = 'SELECT awt.AcctID, MIN(CAST(awt.autoEnter AS SMALLINT)) AS AutoApproved                
FROM dbo.AccountWorkflowTask awt JOIN dbo.WorkflowTask wt ON awt.WorkflowTaskID = wt.WorkflowTaskID                
WHERE (wt.TaskID IN (9, 17) AND ReasonIDExit = 1)'

SELECT @SQL=@SQL+')) '                                    
SELECT @SQL=@SQL+'SELECT a.ApplID, acct.AcctID, acct.dtApplication, ai.FName, ai.MName, ai.LName, ai.SSN, a.Email, ao.CompanyName,'                
SELECT @SQL=@SQL+'ao.DBAName, ao.TaxID, acct.AcctNum, acct.AcctAffinityNum, luA.AffinityNum, luA.AffinityName, t.TaskDesc, awt.dtEnter, 
Count(DMA.AcctNum) As NoOfAccounts   FROM   dbo.Applicant a JOIN dbo.APPLICANTACCOUNT aa ON a.ApplID = aa.ApplID'

JOIN 'TO SOME TABLE'

WHERE 'Some Condition'

现在我想使用Group By子句来获取NoOfAccounts的计数。我无法获得它的语法。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

根据您的评论,如果您使用OVER clause

,则不需要GROUP BY

改为使用

Count(DMA.AcctNum) OVER () AS NoOfAccounts

答案 1 :(得分:0)

我得到了我的问题的答案。我必须在Dynamic Sql中使用Group By,如下所示:

SELECT @SQL=@SQL+ ' GROUP BY a.ApplID, acct.AcctID, acct.dtApplication, ai.FName, ai.MName, ai.LName, ai.SSN, a.Email, ao.CompanyName,                
ao.DBAName, ao.TaxID, acct.AcctNum, acct.AcctAffinityNum, luA.AffinityNum, luA.AffinityName, t.TaskDesc,                
awt.dtEnter, q.QueueDesc, w.WorkflowID, w.WorkflowDesc,                
luO.OriginationID, luO.OriginationDesc, aco.dtCheckOut, aco.UserCheckOut, aco.GUIDCheckout, lts.TaskStageDesc,                
acct.dtApplication,cteAge.Age, asa.SOAApplID, w.WorkflowID, luO.OriginationID, awt.userEnter, cteAutoApprove.AutoApproved,          
acctLam.Market, ful.Request, fun.SourceAccountTypeDescription, fun.FundingStatus, acct.BrokerCode,            
  ai.SSN, ao.TAXID, bup.BusPurposeDesc, ao.BusPurposeOther,                             
  note.Note, note.NoteReasonDesc, note.ReasonCode, aa.RelationshipCode, luRel.RelationshipCodeDesc, Addr.Address1, Addr.Address2, 
  Addr.City, Addr.State, Addr.Zip'