Sql 正在尝试获取具有yes,no值的新列
我有两张桌子:Sql 正在尝试获取具有yes,no值的新列,sql,sql-server,Sql,Sql Server,我有两张桌子: 具有列的短名单文件夹(folderid、foldername、userid) 具有列的入围用户(folderid、shortlisteduserid) 它们与folderid关联 我使用下面的查询来获取由userid50创建的文件夹列表,并计算出50已在每个文件夹中列出了多少用户 select a.folderid,a.foldername,count(b.ShortlistedUserId) as [count] from tblshortlistfolders a left
select a.folderid,a.foldername,count(b.ShortlistedUserId) as [count]
from tblshortlistfolders a left outer join tblshortlistedusers b on a.folderid=b.folderid
where a.userid = 50
group by a.folderid,a.foldername
现在我想在这个结果中再添加一列,每行的值如下
如果您显示了您尝试的查询,那么如何获取所需的表结果(folderid、foldername、totalcount、“newcolumn”)。我想这可能会满足你的要求:(根据记忆) 编辑: 也许我误解了你的数据。下面是一个完整的示例,其中包含一些示例数据:
use tinker -- or whatever test db you have.
CREATE TABLE tblshortlistfolders (
folderid INT NOT NULL primary key
,foldername NVARCHAR(255)
,userid INT NOT NULL
);
CREATE TABLE tblshortlistedusers (
folderid INT NOT NULL
,shortlisteduserid INT NOT null
,constraint fk_tblshortlistedusers_folderid foreign key (folderid) references [dbo].[tblshortlistfolders]
);
INSERT INTO tblshortlistfolders VALUES ( 100 , 'one' , 1); -- created by user 1
INSERT INTO tblshortlistfolders VALUES ( 200 , 'two' , 50); -- created by user 50
INSERT INTO tblshortlistfolders VALUES ( 300 , 'three' , 50); -- created by user 50
INSERT INTO tblshortlistfolders VALUES ( 400 , 'four' , 49); -- created by user 49
INSERT INTO tblshortlistedusers VALUES ( 100, 1); -- shortlisted by 50
INSERT INTO tblshortlistedusers VALUES ( 100, 50); -- shortlisted by 01 too
INSERT INTO tblshortlistedusers VALUES ( 200, 50); -- shortlisted by 50
INSERT INTO tblshortlistedusers VALUES ( 200, 49); -- shortlisted by 49 too
INSERT INTO tblshortlistedusers VALUES ( 300, 50); -- shortlisted by 50
INSERT INTO tblshortlistedusers VALUES ( 300, 50); -- shortlisted by 1 too
SELECT a.folderid,a.foldername,COUNT(b.ShortlistedUserId) AS [COUNT]
,CASE WHEN COUNT(CASE WHEN b.ShortlistedUserId=49 THEN 1 ELSE NULL END)>0 THEN 'Yes' ELSE 'No' END AS [NewColumn]
FROM tblshortlistfolders a LEFT OUTER JOIN tblshortlistedusers b ON a.folderid=b.folderid
WHERE a.userid = 50
GROUP BY a.folderid,a.foldername
这就是我从你的问题中理解的。也许你可以举个例子说明你想要什么?即使我是这样做的,但问题是该文件夹中的用户数始终为零,其中不包含用户49。。nd包含userid 49的文件夹显示其中包含的用户总数的正确计数..:(请查看我提供的示例,让我们知道这与您期望的有什么不同?表b没有userid列,当我将其替换为ShortlistedUserId时,在groupby子句中,它为单个用户提供了单行,即为单个文件夹提供了多行:(
select
a.folderid,
a.foldername,
count(b.ShortlistedUserId) as [count],
case when b.userid = 49 then 'yes' else 'no' end as [newcolumn]
from
tblshortlistfolders a
left outer join tblshortlistedusers b on a.folderid=b.folderid
where a.userid = 50
group by a.folderid,a.foldername
select
a.folderid,
a.foldername,
count(b.ShortlistedUserId) as [count],
case when b.userid = 49 then 'yes' else 'no' end as [newcolumn]
from
tblshortlistfolders a
left outer join tblshortlistedusers b on a.folderid=b.folderid
where a.userid = 50
group by a.folderid,a.foldername