2017-06-06 17 views
0

クエリの予想される結果を日付ごとの正しい合計で取得しようとしていますが、Amountは同じIDを検出したときに加算を続けます。私は日付でグループを取得したい。残念ながら、私はそれがサブクエリが返すというエラーを取得しています、私のクエリを実行したときよりも1行サブクエリはgroup by句で1行以上を返します - MySQL

は、ここに私のクエリです:

enter image description here

I:それはこのエラーを返します

SELECT a.DOB as `DATE`, (CASE when f.INHOUR > 12 or f.INHour = 12 Then 'PM' 
else 'AM' END) as Shift, concat(b.FIRSTNAME, ' ', b.LASTNAME) Fullname, 
a.Amount as DECLARED, SUM(c.Amount) as CALCULATED, 
a.AMOUNT as `NET OF SPECIAL SALES`, 
d.Amount as `CASH OVER SHORT`, 
a.AMOUNT as `CASH DEPOSIT`, 
(SELECT SUM(gndrevn.AMOUNT) from gndrevn where gndrevn.ID= b.ID and 
gndrevn.type = "4" group by gndrevn.DOB, gndrevn.ID) as `TRANSACTION COUNT (POS)` 
FROM gndsale a 
INNER JOIN emp b ON a.ID= b.ID 
INNER JOIN gndsale c ON b.ID= c.ID 
INNER JOIN gndsale d on b.ID = d.ID 
INNER JOIN adjtime f on a.ID= f.ID 
WHERE a.type = "22" AND c.type = "4" AND d.type = "42" and 
STR_TO_DATE(a.DOB, '%m/%d/%Y') BETWEEN '2017-05-01' AND '2017-05-31' GROUP BY DECLARED 
order by STR_TO_DATE(a.DOB, '%m/%d/%Y') 

gndrevn.DOB、gndrevn.IDを削除しようとしました。これが私の結果です

enter image description here

列は、テーブル内のIDの同様の検出したため、カウントPOS追加したばかりのトランザクション。

enter image description here

私は別のクエリでこれを実行しましたが、それはまた、select文

ここの中でグループを必要とします。私は私の取引のために欲しい結果がPOSがこれです回数は何

クエリ:

SELECT ID as `EMPLOYEE`, sum(AMOUNT) as AMOUNT, DOB as DATE from gndrevn 
where ID in (select ID from gndsale) and type = "4" group by 
DOB, ID order by STR_TO_DATE(DOB, '%m/%d/%Y') 

私はクエリを取得する文で私のグループで問題があると思います。誰もが私にこれを助けることができますか? :(

+0

あなたのクエリが混乱している。エラーメッセージは明確です –

答えて

1

私が何をしたいことはGROUP BYからgndrevn.DOBを削除し、WHEREでgndrevn.DOB = a.DOBを追加することだと思います。

+0

WOW!IT WORKED !!:ありがとうございました!!:DI havent that :(私は私のgroup by節で深く考えていました:あなたが持っているサブクエリは複数のレコードを返します。 ( –

+0

深く考えると、私のCALCULATED列も同期していないことに気付きました。同じIDを持つレコードを追加していますが、日付を使用してレコードを決定したいのですが....解決策はありますか? –

+0

前と同じ方法を使うことができます。それに応じて、列名と表名を置き換えてください。 – Anton

関連する問題