如何在 SQL (ANSI SQL) 中使用多关键字

How to use multi-key words in the MSSQL (ANSISQL)

我知道如何在 Oracle 中执行以下示例代码,但是我如何在 ANSI SQL 中像 MSSQL 一样执行相同的脚本,请帮助我处理这个问题。

PS:此脚本用于多关键字(PNO、CASENO、SCRN、IRBCODE、ITEMCODE、MMHCODE、ROWNO)

例如

SELECT * FROM TEST 
WHERE (PNO,CASENO,SCRN,IRBCODE,ITEMCODE,MMHCODE,ROWNO) 
IN 
( 
    SELECT PNO,CASENO,SCRN,IRBCODE,ITEMCODE,MMHCODE,ROWNO FROM TEST 
    WHERE CASENO > 0 AND TO_CHAR(SCRN,'YYYY') = '2017' 
)

如果我的问题不是很清楚,请告诉我

您可以在任何数据库中使用EXISTS

SELECT t.*
FROM TEST t
WHERE EXISTS (SELECT 1
              FROM TEST t2
              WHERE t2.CASENO > 0 AND
                    YEAR(t2.SCRN) = 2017 AND
                    t2.PNO = t.PNO AND
                    t2.CASENO = t.CASE_NO AND
                    t2.SCRN = t.SCRN AND
                    t2.IRBCODE = t.IRBCODE AND
                    t2.ITEMCODE = t.ITEMCODE AND
                    t2.MMHCODE = t.MMHCODE AND
                    t2.ROWNO = t.ROWNO
             );

鉴于您正在测试是否处于同一 table,我认为以下内容会做同样的事情:

SELECT t.*
FROM TEST t
WHERE t.CASENO > 0 AND TO_CHAR(t.SCRN, 'YYYY') = '2017';

@Gordon Linoff 给了你很好的例子,我只是稍微改变一下,希望它能帮助你

SELECT t.*
FROM irbvisit t
WHERE EXISTS (SELECT 1
              FROM irbvisit t2
              WHERE t2.CASENO > 0 AND
                  convert(varchar(4), SCRN, 126)='2017' and 
                    t2.PNO = t.PNO AND
                    t2.CASENO = t.CASENO AND
                    t2.SCRN = t.SCRN AND
                    t2.IRBCODE = t.IRBCODE AND
                    t2.ITEMCODE = t.ITEMCODE AND
                    t2.MMHCODE = t.MMHCODE AND
                    t2.ROWNO = t.ROWNO