sql server 2012中的复杂子查询

sql server 2012中的复杂子查询,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我有两张桌子 1.主修课程包含 AM_ID Attend_Date Time_From Time_To Course_ID Subject_ID 1 2014-03-10 10:00 11:00 1 22 2 2014-03-10 10:00 11:00 1 23 第二个孩子 CA_ID AM_ID Roll_No Attendance 1 1 1 1 2

我有两张桌子 1.主修课程包含

AM_ID Attend_Date Time_From Time_To Course_ID Subject_ID
 1     2014-03-10  10:00     11:00    1        22
 2     2014-03-10  10:00     11:00    1        23
第二个孩子

CA_ID   AM_ID   Roll_No  Attendance
1           1       1         1
2           1       2         0
3           1       3         1
4           2       1         1
我想要这样的结果

Subject_ID    Total_Absenty   Total_Lectures
22             2                10
23             5                11
我试过了

select AM.Subject_ID, count(AC.Attendance) as Attendance
,
(
    select count(AC1.Attendance) from Attend_Child AC1
    inner join Attend_Master AM1 on AC1.TT_ID = AM1.TT_ID
    where AC1.Roll_No = 3 AND AM1.Course_ID = 1 AND DATENAME(Month, AM1.Attend_Date) = 'March'
)
 from Attend_Child AC
inner join Attend_Master AM on AC.TT_ID = AM.TT_ID
where AC.Roll_No = 3 AND AM.Course_ID = 1 AND AC.Attendance = 0 AND DATENAME(Month, AM.Attend_Date) = 'March'
group by AM.Subject_ID, AM.subject_Type
通过使用这个,我得到了错误的结果。
如何在子查询中使用group by?

在我看来,您似乎忽略了表中的一些字段……我可以问一下复杂的子查询在哪里吗?我的意思是,我习惯了2-3页长的查询。。。。这一点都不复杂。嗨,丹尼尔E。谢谢你的回复1。TT_ID错误地是它的AM_ID 2。AC.Roll_No是特定学生的注册号。如果我想查看特定学生的结果。3.不需要AM.subject\u类型。您可以始终将Roll\u ID添加到select和group by以获得单独的结果…我通过键盘传递Roll\u ID。我只想得到被选中的学生的结果。
DECLARE @CourseID INT =1
DECLARE @Month varchar(10)='March'

SELECT m.SubjectID
    ,Count(*) [Lectures] --count of all classes attended or not
    ,Count(*)-SUM(c.Attendance) [Absences]--count of all - attended classes
FROM Attend_Master m
INNER JOIN Attend_Child c
    ON m.AM_ID=c.AM_ID  --WHAT IS TT_ID?
WHERE m.CourseID=@CourseID
    DATENAME(Month, m.Attend_Date) = @Month
    --AC.Roll_No = 3  --WHAT DOES THIS DO FOR YOU?
GROUP BY M.Subject_ID
--, AM.subject_Type  --WHERE DID THIS COME FROM?