2016-03-21 11 views
0
select *, COUNT(*), DATE_FORMAT(CREATE_DATE,'%m-%Y') AS form_date 
from incident_view 
where (create_month = month(NOW() - INTERVAL 1 MONTH) 
     and (create_year = year(NOW() - INTERVAL 1 MONTH))) 
    OR (create_month = month(NOW() - INTERVAL 2 MONTH) 
     and (create_year = year(NOW() - INTERVAL 2 MONTH))) 
AND CUSTOMER_COMPANY_NAME = "Company" 
GROUP BY CREATE_MONTH 

みなさん、こんにちは、2つの数字を比較し、真偽を受け取りますか?

は、私は上記の持っているクエリが正常に動作しています。

私が得る結果はいくつかの行ですが、重要な行は、次のとおりです。

COUNT(*) | form_date 
667   01-16 
1964   02-16 

それは最後の2ヶ月の2つのカウントを比較することが可能ですかしら、(2月16日)先月か> 2番目の先月(01-16)。 02-16> 01-16の場合は、結果が真であることを確認します。

助けていただければ幸いです。

よろしくお願いいたします。

答えて

2

月/年単位でグループ化する代わりに、カウントを計算するときにCASEまたはIFで使用します。あなたは、より大きな等しい、または未満のための3つの異なる結果をしたい場合は、あなたがそれらに名前を付け、それぞれの場合に異なる値を返すためにCASEを使用できるように

SELECT SUM(IF(create_month = MONTH(NOW() - INTERVAL 1 MONTH) 
       AND create_year = YEAR(NOW() - INTERVAL 1 MONTH), 1, 0)) > 
     SUM(IF(create_month = MONTH(NOW() - INTERVAL 2 MONTH) 
       AND create_year = YEAR(NOW() - INTERVAL 2 MONTH), 1, 0)) AS count_higher 
FROM incident_view 
WHERE customer_company_name = "Company" 

は、最良の方法は、サブクエリで合計を計算することです。 。

SELECT CASE WHEN last_month > prev_month THEN 1 
      WHEN last_month = prev_month THEN 2 
      ELSE 0 
     END AS diff 
FROM (
    SELECT SUM(IF(create_month = MONTH(NOW() - INTERVAL 1 MONTH) 
        AND create_year = YEAR(NOW() - INTERVAL 1 MONTH), 1, 0)) AS last_month, 
      SUM(IF(create_month = MONTH(NOW() - INTERVAL 2 MONTH) 
        AND create_year = YEAR(NOW() - INTERVAL 2 MONTH), 1, 0)) AS prev_month 
    FROM incident_view 
    WHERE customer_company_name = "Company" 
) AS subquery 
+0

ような何かを行うことができますありがとうございました。私は、結果が1の場合、先月は先月2日よりも高いか、または? –

+0

はい、そうです。コード中の '>'から明らかではないのですか? – Barmar

+0

ありがとう、それは働いています。 –

0

あなたは

Select max(viewcount) 
FROM (select * , COUNT(*) AS viewcount, 
DATE_FORMAT(CREATE_DATE,'%m-%Y') AS form_date 
from incident_view 
Where (create_month = month(NOW() - INTERVAL 1 MONTH) and (create_year = year(NOW() - INTERVAL 1 MONTH))) 
OR (create_month = month(NOW() - INTERVAL 2 MONTH) and (create_year = year(NOW() - INTERVAL 2 MONTH))) 
AND CUSTOMER_COMPANY_NAME = "Company" 
GROUP BY CREATE_MONTH); 
+0

これは最大値を表示しますが、それが最後の月か2番目の月かを示しません。 – Barmar

+0

また、要求通りtrue/falseを返しません。 – Barmar

+0

@Barmar 真実私は質問を正しく読まなかった、私は謝罪する。 –

関連する問題