2014-06-20 30 views
1

我在這裏得到不正確的語法:如何使用SQL連接與案件

SELECT 
     BA.Bank, 
     BA.AccountNo, 
     BA.closingBalance, 
     BT.TransactionDate =(Case When ClosingBalance <= 0 Then Getdate() 
            Else TransactionDate 
           End), 
     BankaccountID 
    FROM BankTransactionDetail BT Right Join dbo.BankAccount BA ON 
     BT.AccountID = BA.AccountID 

四處錯誤:附近有語法錯誤「=」。

注意:不加入其工作正常。 Plaese幫助。

回答

1

你要這個

SELECT BK.BankCode, 
     BA.Bank, 
     BA.AccountNo, 
     BA.closingBalance, 
     Case When BA.ClosingBalance <= 0 Then Getdate() Else BT.TransactionDate End, 
     BankaccountID 
FROM BankTransactionDetail BT Right Join dbo.BankAccount BA ON BT.AccountID = BA.AccountID 

或者

試試這個

SELECT BA.Bank, 
     BA.AccountNo, 
     BA.closingBalance, 
     TransactionDate =(Case When ClosingBalance <= 0 Then Getdate() Else TransactionDate End), 
     BankaccountID 
    FROM BankTransactionDetail BT Right Join dbo.BankAccount BA ON BT.AccountID = BA.AccountID 
1

在定義別名列不使用表後綴。在你的情況下,你得到'TransactionDate'列,並試圖以BT作爲前綴。在你前綴的那一刻,SQL Server將嘗試從BT表中讀取該列,並認爲你正在將派生列分配給現有列。只要刪除BT前綴,它應該爲你工作。

SELECT BK.BankCode, 
      BA.Bank, 
      BA.AccountNo, 
      BA.closingBalance, 
      TransactionDate =(Case When ClosingBalance <= 0 Then Getdate() 
             Else TransactionDate 
            End), 
      BankaccountID 
     FROM BankTransactionDetail BT Right Join dbo.BankAccount BA ON 
      BT.AccountID = BA.AccountID 
1

使用此:

SELECT 
    BA.Bank, 
    BA.AccountNo, 
    BA.closingBalance, 
    (CASE WHEN ClosingBalance <= 0 THEN GETDATE() 
      ELSE TransactionDate 
      END) AS TransactionDate, 
     BankaccountID 
FROM BankTransactionDetail BT Right Join dbo.BankAccount BA ON 
     BT.AccountID = BA.AccountID