2015-07-28 30 views
1

我有這個疑問在這裏:添加組通過查詢和計數變量

SELECT nsd.REGISTRATION_DATE,nsd.Subject_Name,nsd.Subject_Code,nsda.District_Name, nsda.Region_Name 
    FROM tbl1 AS nsd 
    LEFT JOIN 
    tbl2 AS nsda ON nsd.Subject_Code = nsda.Subject_Code 

我需要組此查詢由Subject_Name, District_Name and Region_Name.我也想添加一個計數器,它告訴我,例如:

Subject|Nr.Total| Region| District 
Maths 2  Austria Tyrol 
Maths 5  Austria Vienna 

當我嘗試添加該組由我得到一個錯誤,它說,一些有關聚合函數:

消息8120,級別16,狀態1,行1列'tbl1.REGISTRATION_DATE'在選擇列表中爲 無效,因爲它不包含在 聚合函數或GROUP BY子句中。

在此先感謝。

+0

郵政錯誤,請,並添加一些樣本數據。 –

+0

發佈您的嘗試,並且人們可以向您顯示您犯了錯誤的地方,而不是要求他們爲您提供解決方案。 –

+0

你試圖將哪一列分組? –

回答

0

由於您在SELECT中未使用REGISTRATION_DATE,因此可以忽略它。

SELECT 
    nsd.Subject_Name, 
    [Nr. Total] = ISNULL(COUNT(nsda.Subject_Code), 0), 
    nsda.Region_Name, 
    nsda.District_Name 
FROM tbl1 nsd 
LEFT JOIN tbl2 nsda 
    ON nsd.Subject_Code = nsda.Subject_Code 
GROUP BY nsd.Subject_Name, nsda.Region_Name, nsda.District_Name 

在SQL Server中,SELECT列必須出現在GROUP BY子句。

+1

非常感謝,我接受它在一些分鐘:) 工作就像一個魅力 –

0
SELECT nsd.Subject_Name AS [Subject], count(*) AS [Nr.Total], nsda.Region_Name AS [Region], nsda.District_Name AS [District] 
    FROM tbl1 AS nsd 
    LEFT JOIN 
    tbl2 AS nsda ON nsd.Subject_Code = nsda.Subject_Code 
Group by nsd.Subject_Name, nsda.Region_Name, nsda.District_Name 

如果您在select中需要'tbl1.REGISTRATION_DATE',請將其添加到Group By語句中。

0

嘗試此查詢: -

SELECT nsd.REGISTRATION_DATE, nsd.Subject_Name, nsd.Subject_Code, nsda.District_Name, nsda.Region_Name, COUNT(*) 
FROM tbl1 AS nsd 
LEFT JOIN 
tbl2 AS nsda ON nsd.Subject_Code = nsda.Subject_Code 
GROUP BY nsd.REGISTRATION_DATE, nsd.Subject_Name, nsd.Subject_Code, nsda.District_Name, nsda.Region_Name 
0

試試這個:

SELECT nsd.Subject_Name as Subject, count(*) as 'Nr.Total', nsd.Region_Name as Region, nsd.District_Name as District 
FROM tbl1 AS nsd 
LEFT JOIN 
tbl2 AS nsda ON nsd.Subject_Code = nsda.Subject_Code 
GROUP BY nsd.Subject_Name, nsd.District_Name, nsd.Region_Name