【问题标题】:How to use multi-key words in the MSSQL (ANSISQL)如何在 SQL (ANSI SQL) 中使用多关键字
【发布时间】:2017-03-30 01:31:56
【问题描述】:

我知道如何在 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' 
)

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

【问题讨论】:

    标签: sql sql-server oracle tsql ansi-sql


    【解决方案1】:

    您可以在任何数据库中使用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
                 );
    

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

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

    【讨论】:

    • 您好,感谢您尽快回复,但我的情况是针对 T-SQL 而不是 Oracle,希望您能给我 ANSI -SQL 示例,再次感谢
    • @WillieCheng。 . .唯一的 Oracle 语法是 TO_CHAR()。这很容易用YEAR() 或类似的函数替换。
    【解决方案2】:

    @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
    

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 2010-10-10
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多