Я пытаюсь получить только строки в долларах США и евро из таблицы с большим количеством валют.

Я думал, что код должен быть примерно таким:

SELECT IF(CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='USD',1,0) OR IF(CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='EUR',1,0
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES

Но я знаю, что это не так. Я бы хотел, чтобы таблица была чем-то вроде столбца долларов США и евро

0
eduardo0 12 Май 2014 в 22:43

5 ответов

Лучший ответ

На мой взгляд, предыдущие ответы хороши, но предположим, что у вас будет много валют, вы могли бы

SELECT * FROM CONTRACTS_IN_DIFFERENT_CURRENCIES WHERE CURRENCY IN  ("USD","EUR")
0
IEatBagels 12 Май 2014 в 18:51

Похоже, вы пытаетесь использовать синтаксис Excel IF(condition, true_response, false_response). Эквивалент в T-SQL - синтаксис CASE WHEN THEN ELSE END:

SELECT 
    CASE 
        WHEN CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY ='USD' THEN 1 
        WHEN CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='EUR' THEN 1
        ELSE 0
    END 
FROM 
    CONTRACTS_IN_DIFFERENT_CURRENCIES

Это будет работать с более сложными запросами, чем приведенный вами пример. Другой способ сделать это, если у вас есть несколько возможных значений для одного и того же поля, которые вернут тот же ответ, будет

SELECT 
    CASE 
        WHEN CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY IN ('USD','EUR') THEN 1
        ELSE 0
    END 
FROM 
    CONTRACTS_IN_DIFFERENT_CURRENCIES

Однако это неправильный синтаксис для получения только строк с определенными валютами; предыдущий ответ с

SELECT *     
FROM 
    CONTRACTS_IN_DIFFERENT_CURRENCIES
WHERE 
    CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY IN ('USD','EUR') 

Лучше всего подойдет для этого.

1
outis nihil 12 Май 2014 в 19:19
SELECT * 
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES WHERE
CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='USD' OR CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='EUR'

ИЛИ

SELECT * 
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES WHERE
`CONTRACTS_IN_DIFFERENT_CURRENCIES`.`CURRENCY`="USD" OR `CONTRACTS_IN_DIFFERENT_CURRENCIES`.`CURRENCY`="EUR"

Я не понимаю ,1,0) в этой части. Так что, если вам нужно еще какое-то условие, используйте AND, OR и комбинацию скобок для достижения результата.

Просто чтобы вы знали, если вам нужны disctinc (неповторяющиеся значения), вы можете использовать слово DISTINCT и указать, какие именно поля вам нужны.

0
Tigran 12 Май 2014 в 18:47

Вам нужно использовать предложение WHERE.

Насколько я могу судить, вы ищете запрос по строкам

SELECT * FROM `CONTRACTS_IN_DIFFERENT_CURRENCIES` WHERE `CURRENCY` = "USD" OR `CURRENCY` = "EUR"
0
Steen Schütt 12 Май 2014 в 18:47

Если вы хотите подсчитать количество контрактов в каждой из этих валют с каждым подсчетом в виде столбца (который, кажется, обозначен одним из комментариев в вашем вопросе), используйте это…

SELECT SUM(CURRENCY = 'USD') AS usdContracts, 
    SUM(CURRENCY = 'EUR') AS eurContracts
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES

Если вы хотите подсчитать количество контрактов в каждой из этих валют с каждым подсчетом в виде строки с подсчетом в одном столбце и сокращением валюты в другом, используйте это…

SELECT COUNT(*) AS numContracts, CURRENCY AS currency
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES
WHERE CURRENCY = 'USD' OR CURRENCY = 'EUR'
GROUP BY CURRENCY;
0
Patrick Q 12 Май 2014 в 18:58