2017-03-30 24 views
1

我知道如何在Oracle中做如下的示例代碼,但是我怎樣才能像MSSQL那樣在ANSI SQL中做同樣的腳本,請幫我處理這個問題題。如何在MSSQL中使用多個關鍵字(ANSISQL)

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' 
) 

請讓我知道,如果我的問題ISN 「T很清楚

回答

1

@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 
2

您可以在任何數據庫中使用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'; 
+0

感謝您儘快響應嗨,但我的情況是T-SQL不是甲骨文,希望你能給我ANSI-SQL例子再次感謝 –

+1

@WillieCheng。 。 。唯一的Oracle'ish語法是'TO_CHAR()'。這很容易替換爲'YEAR()'或類似的函數。 –

+0

是的你是對的,非常感謝你的幫助 –

相關問題