如果您显示您尝试过的查询,将会有所帮助。我认为这可能会做你想要的:(从记忆中)
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
编辑:
也许我误解了你的数据。这是一个包含一些示例数据的完整示例:
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
这符合我对您问题的理解。也许你可以举一个你想要的例子?