2014-12-15 3 views
1

Пожалуйста, ознакомьтесь с нижеследующим кодом.MySQL: извлечение значений в разные столбцы

SELECT Transactions.`idTransactions`, 
Transactions.`Transaction_TimeStamp`, 
Transactions.`idPortfolio`, 
CASE when Transactions.`Transaction_Amount`< 0 THEN END AS "Encashments" ELSE END AS "Additions" , 
Portfolio.Activation 
FROM Transactions 
INNER JOIN Portfolio ON Transactions.idPortfolio = Portfolio.idPortfolio 
WHERE Transactions.idPortfolio=1 
ORDER BY `Transaction_TimeStamp` DESC 

Здесь, если Transactions.Transaction_Amount> 0, то мне нужно, чтобы отобразить это значение в колонке «Дополнения», еще в колонке «инкассации». Однако мой код генерирует ошибки, как показано ниже.

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS "Encashments" ELSE END AS "Additions" , 
Portfolio.Activation 
FROM Transacti' at line 4 

Как исправить это, пожалуйста?

ответ

2

Если вы хотите 2 разные столбцы, то используйте два случая

SELECT Transactions.`idTransactions`, 
     Transactions.`Transaction_TimeStamp`, 
     Transactions.`idPortfolio`, 
     CASE when Transactions.`Transaction_Amount` <= 0 
      THEN (Transaction_Amount*-1) 
     END AS Encashments, 
     CASE when Transactions.`Transaction_Amount` > 0 
      THEN Transaction_Amount 
     END AS Additions, 
     Portfolio.Activation 
FROM Transactions 
INNER JOIN Portfolio ON Transactions.idPortfolio = Portfolio.idPortfolio 
WHERE Transactions.idPortfolio=1 
ORDER BY `Transaction_TimeStamp` DESC 
+0

Я получаю ошибки, вы можете объединиться с полным кодом PLS? –

+0

Либо 'abs (Transaction_Amount)', либо просто 'Transaction_Amount * -1' –

+0

Спасибо за помощь, которую высоко оценили. –

1

У вас нет результата в вашем случае.

CASE when Transactions.`Transaction_Amount`< 0 THEN something_missing_here END AS 
1

Вы должны использовать SQL как:

SELECT Transactions.`idTransactions`, 
Transactions.`Transaction_TimeStamp`, 
Transactions.`idPortfolio`, 
CASE when Transactions.`Transaction_Amount`< 0 THEN "Encashments" ELSE "Additions" END AS Type, 
Portfolio.Activation 
FROM Transactions 
INNER JOIN Portfolio ON Transactions.idPortfolio = Portfolio.idPortfolio 
WHERE Transactions.idPortfolio=1 
ORDER BY `Transaction_TimeStamp` DESC 

Ваш случай, когда то синтаксис является неправильным. Вы можете сослаться на here

Смежные вопросы