[英]How to add an extra column to the Group By
我正在使用TSQL。
SELECT
s.Login_Name,
COUNT( DISTINCT (isnull(s.s1CIDNumber,'')+isnull(s.s1AVATARNumber,''))) AS 'Number of Surveys For the Week Ending on 60/09/2015'
FROM [dbSuppHousing].[dbo].[tblSurvey]s
inner join tblUsers u on
s.Login_Name=u.UserName
where s.Survey_DT >='06/01/2015' AND s.Survey_DT <='2015-06-09 23:59:59'
group by s.Login_Name
当前,它显示如下数据:
LoginName Number of Surveys
MrA 8
Mrb 4
mrc 4
mrd 6
如何将user_ id显示为另一列? User_id位于tblUser中,并且tblsurvey和tblUser在Login_Name上都具有1-1关系
因此结果应如下所示:
LoginName Number of Surveys User_ID
MrA 8 33
Mrb 4 55
mrc 4 11
mrd 6 07
我试图加入这两个表并添加User_id,但是每次我被众所周知的错误“ User_id应该属于group by的一部分”所阻止时,
不,我不希望User_id成为group by的一部分,我只希望它将其添加到第三列。
如果user_ID是唯一的,则可以将其添加到GROUP BY,而不会增加记录集。 您还可以将初始查询插入到临时表中并进行更新(开销更大)以获取user_id,如下所示:
IF OBJECT_ID('tempdb..#Users', 'U') IS NOT NULL
DROP TABLE #Users;
CREATE TABLE #Users
(login_Name NVARCHAR(256),
NumSurveys INT,
User_ID INT)
INSERT INTO #Users(login_Name, NumSurveys)
SELECT
s.Login_Name,
COUNT( DISTINCT (isnull(s.s1CIDNumber,'')+isnull(s.s1AVATARNumber,''))) AS 'Number of Surveys For the Week Ending on 60/09/2015'
FROM [dbSuppHousing].[dbo].[tblSurvey]s
inner join tblUsers u on
s.Login_Name=u.UserName
where s.Survey_DT >='06/01/2015' AND s.Survey_DT <='2015-06-09 23:59:59'
group by s.Login_Name
UPDATE #Users
SET User_ID = User_ID
FROM #Users u
INNER JOIN tblUsers u2
ON u.login_Name = u2.login_Name
将您的GroupBY查询放入子选择中,并给标签“ a”。 然后将整个子选择加入到tblUser中,并给它一个标签“ b”。 然后在LoginID上加入“ a”和“ b”。 然后选择a.user_id,然后选择其余的“ b”
SELECT a.user_id,b.*
FROM
(SELECT
s.Login_Name,
COUNT( DISTINCT (isnull(s.s1CIDNumber,'')+isnull(s.s1AVATARNumber,''))) AS 'Number of Surveys For the Week Ending on 60/09/2015'
FROM [dbSuppHousing].[dbo].[tblSurvey]s
inner join tblUsers u on
s.Login_Name=u.UserName
where s.Survey_DT >='06/01/2015' AND s.Survey_DT <='2015-06-09 23:59:59'
group by s.Login_Name) a inner join tblUsers b on a.Login_Name = b.Login_Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.