如何在SQLServer和Postgresql中实现这一点

如何在SQLServer和Postgresql中实现这一点,sql,Sql,I/p o/p 您似乎希望存在: country Status Flag ind y 1 ind y 1 ind y 1 us y 1 us y 1 us y 1 uk y 0 uk y 0 uk n 0 您还可以使用窗口功能: SELECT t.*, (CASE WHEN EXISTS

I/p

o/p


您似乎希望
存在

country Status  Flag
ind     y       1
ind     y       1
ind     y       1
us      y       1
us      y       1
us      y       1
uk      y       0
uk      y       0
uk      n       0
您还可以使用窗口功能:

SELECT t.*, 
       (CASE WHEN EXISTS (SELECT 1 
                          FROM table t1 
                          WHERE t1.country = t.country AND t1.Status = 'n'
                         ) 
             THEN 0 ELSE 1 
        END) AS Flag
FROM table t;

实现什么?哪些数据库,哪些版本?标题和标签包含不同的产品。MySQL!=SQL Server!=PostgreSql你能解释一下旗帜背后的逻辑吗?这个问题现在应该结束了!请阅读并在(按国家划分)上方创建一个
0=COUNT(状态为'n'时为案例,然后为0结束)作为标志
SELECT t.*, 
       (CASE WHEN EXISTS (SELECT 1 
                          FROM table t1 
                          WHERE t1.country = t.country AND t1.Status = 'n'
                         ) 
             THEN 0 ELSE 1 
        END) AS Flag
FROM table t;
SELECT t.*, 
      (CASE WHEN SUM(CASE WHEN [STATUS] = 'n' THEN 1 ELSE 0 END) OVER (PARTITION BY COUNTRY) = 1 
            THEN 0 ELSE 1 
       END) AS Flag
FROM table t;