0

私はかなり単純なクエリを持っています:

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
    AND [date] < '2012-06-27';

条件に基づいて列 [日付] を切り替える方法があるかどうか疑問に思っています。この場合は、小さいか早いです。

言い換えれば、次のようなもの

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
    AND (IF(time_created <= transaction_date)) time_created < '2012-06-27' ELSE 
        transaction_date > '2012-06-27');

つまり、2 つの列を比較して行の最も早い日付を使用するクエリです (time_created が常に最も早いはずですが、ここではそうではありません)。そうでない場合は、クエリを2つに分割できますが、1つにできるかどうか疑問に思っています。

4

2 に答える 2

3
SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
AND IF(time_created <= transaction_date, time_created < '2012-06-27', transaction_date > '2012-06-27');

または ANSI SQL ソリューション:

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
AND CASE WHEN time_created <= transaction_date
         THEN time_created < '2012-06-27'
         ELSE transaction_date > '2012-06-27'
    END
于 2012-06-27T22:00:52.570 に答える
3

次のような二重条件を使用できます。

and  (
    time_created <= transaction_date and time_created < '2012-06-27' or
    time_created > transaction_date and transaction_date > '2012-06-27'
)
于 2012-06-27T22:01:07.107 に答える