SQL Select 行取决于不同列中的值

SQL Select row depending on values in different columns

我已经在这里找到了很多答案,但现在我似乎找不到任何适合我的具体问题的答案。

我不知道如何根据不同列中的值select行中的值

通过下面的table,我想达到以下结果。

如果 stdvpuni = 1 列中的值,则 return 文章(专栏艺术)这一行的值/内容。

如果 stdvpuni = 0 列中的值,则 return 值/内容来自 STDUNIABG = 1 行中的本文(专栏艺术)。

我不知道值/内容是什么,但我想这对您来说很容易理解。因此,我将重点介绍 select 的方法:

SELECT
CASE
    WHEN current.stdvpuni = 1 THEN 'values / contents of current row'
    ELSE 'values / contents of other row'
END
FROM yourtable current
JOIN yourtable other
ON other.stdvpuni = 1;

根据其他行的内容,您似乎想要一行部分 art。这建议使用 row_number():

select t.*
from (select t.*,
             row_number() over (partition by art order by stdvpuni desc, STDUNIABG desc) as seqnum
      from t
     ) t
where seqnum = 1;

如果两列都不是 1,您没有指定要做什么。您可能需要 where 子句 (where 1 in (stdvpuni, STDUNIABG)) 或 order by.

中的其他条件

WHERE 子句中使用带有 NOT EXISTS 的条件:

SELECT t1.*
FROM tablename t1 
WHERE t1.STDVPUNI = 1 
   OR (
        t1.STDVPUNI = 0 AND t1.STDUNIABG = 1
        AND NOT EXISTS (SELECT 1 FROM tablename t2 WHERE t2.ART = t1.ART AND t2.STDVPUNI = 1)
      );