2016-04-02 24 views
0
ben bu sorguyu çalıştı

, bu hata var bir agrega (SQL Sunucu Hatası) WHERE yan tümcesinde görünmeyebilir

select 
    (A.StudentId), 
    max(A.StudentFirstName), 
    max(A.StudentLastName), 
    max(A.StudentAddress), 
    'Batch ' + max(C.BatchName), 
    CAST(MAX(CAST(A.StudentStatus as INT)) AS BIT), 
    max(B.StudentBatchId) 
from 
    tblStudentDetails A 
inner join 
    tblStudentBatchDetails B on A.StudentId = B.studentid 
inner join 
    tblBatch C on C.BatchId = B.batchid 
where 
    max(A.StudentFirstName) like 'A%' 
group by 
    A.StudentId 

:

An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.

birisi yardım bu sorunu kurtarmak için mi?

+2

yanlışlıkla hakkında ne anlamıyorum? "Sahip" deyimini kullanın. Bu, neden bu durumda bir max() 'ye ihtiyacınız olacağını hiçbir fikrim yok dedi. –

+0

Tam olarak ne elde etmeye çalışıyorsunuz? Tablo yapılarınızı, bazı örnek verilerini ve bu örnek için elde ettiğiniz sonucu paylaşır mısınız? – Mureinik

+1

Tam olarak 'A%' ile ?? max (A.StudentFirstName) ile elde etmeyi ne bekliyorsunuz ??? Bu hiç mantıklı değil. Bana öyle geliyor ki, aklınıza gelebilecek her şey için sadece kavradığınız bir sorunu çözmeye çalışmak için çok uzaksınız. Çözmek istediğiniz gerçek problemi, bazı örnek veriler ve bu verilerden elde ettiğiniz çıktıyla açıklamak çok daha iyi olacaktır ve bunu yapmak için sorguyu nasıl yazacağınızı sorun. –

cevap

2

doğru sözdizimi olurdu ...

select (A.StudentId),max(A.StudentFirstName), 
max(A.StudentLastName),max(A.StudentAddress), 
'Batch ' + max(C.BatchName),CAST(MAX(CAST(A.StudentStatus as INT)) AS BIT), 
max(B.StudentBatchId) 
from tblStudentDetails A 
inner join tblStudentBatchDetails B on A.StudentId=B.studentid 
inner join tblBatch C on C.BatchId=B.batchid 
group by A.StudentId 
having max(A.StudentFirstName) like 'A%' 
İlgili konular