2016-05-16 13 views
1

仕掛品の割合(仕掛品と最終仕訳を含む)を合計した取引と比較する必要があります。ウェブを見て、私は到着しました:2つのSQL Count()の結果の割合を計算する

SELECT 100 * (SELECT COUNT(transaction_id) from t_transaction_main 
WHERE due_date = '2016-05-16' and (suspend_status !='' OR 
close_date != '0-0000-00'))/COUNT(transaction_id) from t_transaction_main as test; 

これまでのところこれまで働いていました。ただし、最終的な取引照会は意図された通りですが、実際には特定の日付(ここでは2016-05-16)で取引で分割する必要があります。しかし、WHERE句を追加したとき...

SELECT 100 * (SELECT COUNT(transaction_id) from t_transaction_main 
WHERE due_date = '2016-05-16' and (suspend_status !='' OR 
close_date !='0-0000-00'))/COUNT(transaction_id) WHERE due_date = '2016-05-16' from t_transaction_main as test; 

すぐに動作を停止し、構文エラーを返しました。私も括弧内にCOUNT(transaction_id) WHERE due_date = '2016-05-16'をラップしようとしましたが、それは役に立たなかった。

いずれの解決策も歓迎されます、ありがとうございます。

私はこれらの日付を返すサブクエリとして2番目のクエリでWHEREを使用してのポイントが表示されていない
+0

2番目のクエリのFROM文の前にWHERE due_dateを使用します。 –

+0

@ChanomFirstありがとう、私はそれを修正しましたが、まだ動作していません – Rheine

答えて

0

間違った句の順序あなたが句から

SELECT 100 * (SELECT COUNT(transaction_id) 
     from t_transaction_main 
     WHERE due_date = '2016-05-16' and (suspend_status !='' OR 
    close_date !='0-0000-00'))/COUNT(transaction_id) 
FROM t_transaction_main as test 
WHERE due_date = '2016-05-16' ; 
+0

それは働いた!ありがとうございました。適切な構文の順序は、常に私をオフにします。 – Rheine

0

前にどこを置きますWHERE句は最終の後に移動する必要がありますfrom t_transaction_main as test

0

なぜサブクエリを使用しますか?または2つの集計関数ですか?

SELECT AVG(CASE WHEN suspend_status <> '' OR close_date <> '0-0000-00' 
       THEN 100.0 ELSE 0 
      END) 
FROM t_transaction_main test 
WHERE due_date = '2016-05-16' ; 

これはあなたの元のクエリよりもはるか簡単です。

関連する問題