我有一个如下所示的表“DEMO”,我需要在选择查询中找到一些指定的结果
PID Is_Viewed
1 False
1 False
1 False
1 False
2 True
2 False
现在我只需要选择那些记录,如果只有一个值“True”,那么在 select 语句中结果将为 1,否则为 0。我已经尝试了很多,但没有得到想要的结果...我的查询是
/// select statement
SELECT distinct PId,CASE WHEN EXISTS(Select Is_Viewed from DEMO where Is_viewed=1) then 1 else 0 end as Is_viewed FROM DEMO
i WANT result like
PId Is_Viewed
1 0
2 1
最佳答案
也许是这样的:
SELECT
PId,
MAX(CASE WHEN Is_Viewed='True' THEN 1 ELSE 0 END) AS Is_Viewed
FROM
DEMO
GROUP BY
PId
编辑
考虑您提供的数据。
DECLARE @tbl TABLE(PID INT,Is_Viewed VARCHAR(10))
INSERT INTO @tbl
VALUES
(1,'False'),
(1,'False'),
(1,'False'),
(1,'False'),
(2,'True'),
(2,'False')
通过此查询
SELECT
PId,
MAX(CASE WHEN Is_Viewed='True' THEN 1 ELSE 0 END) AS Is_Viewed
FROM
@tbl AS tbl
GROUP BY
PId
输出是这样的:
PId Is_Viewed
1 0
2 1
关于sql - 如何从sql server中一条记录的多个值中仅获取指定值记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906363/