sql - 如何从sql server中一条记录的多个值中仅获取指定值记录

标签 sql sql-server database stored-procedures

我有一个如下所示的表“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/

相关文章:

sql - Postgresql Exclusive OR (XOR) CHECK CONSTRAINT,可能吗?

sql - 为什么修改日期失败时会出现这种情况

sql - 是否可以将 array_agg 嵌套在另一个 array_agg 中

sql - SSIS 包中的季度数据加载

database - 如何确保文档中的字段在 ArangoDB 中是唯一的?

sql - tstzrange 查询包含的性能不佳

sql-server - 使用联接快速删除记录的最有效方法?

SQL 检查时间是否出现在某些时间段之间

c# - 如何获取组合框 ID 以返回数据库

database - H2数据库用户