重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

サブクエリが上手く行きません、何が間違ってるのでしょうか?
select IODate,
(select sum(Price) as "収入" from dailyio where IO='収入' group by IODate) ,
(select sum(Price) as "支出" from dailyio where IO='支出' group by IODate)
from dailyio
group by IODate;

dailyio-------------------------------------
フィールド名型
Codebigint(20)
IODatedate
IOvarchar(255)
Koumokuvarchar(255)
Syousaivarchar(255)
Memotext
Pricebigint(20)
-----------------------------------------------
ご多忙中とは存じますが宜しくご教授お願いします。

A 回答 (2件)

サブクエリするなら外部結合でしょうね



ただサブクエリ使わなくてもできます
たとえば
SELECT IODate
,SUM(IF(IO='収入',PRICE,0)) AS 収入
,SUM(IF(IO='支出',PRICE,0)) AS 支出
FROM dailyio group by IODate

とか

SELECT IODate
,SUM((IO='収入')*PRICE) AS 収入
,SUM((IO='支出')*PRICE) AS 支出
FROM dailyio group by IODate

とか

この回答への補足

回答ありがとうございます
二つとも試してみたのですが
ERROR 1064: You have an error in your SQL syntax.
になってしまいます、
原因が解らないです><

補足日時:2008/03/07 10:28
    • good
    • 0
この回答へのお礼

,SUM(IF(IO='収入',PRICE,0)) AS 収入


,SUM(IF(IO='収入',PRICE,0)) AS "収入"
にしたら行けました!!!
ありがとうございます!!

お礼日時:2008/03/07 10:39

外部結合ならこんな感じでいけるのかな



SELECT DISTINCT D.IODate,収入,支出
FROM dailyio as D
INNER JOIN (SELECT IODate,SUM(PRICE) AS 収入 FROM dailyio WHERE IO='収入' GROUP BY IODate) AS I1
ON D.IODate=I1.IODate
INNER JOIN (SELECT IODate,SUM(PRICE) AS 支出 FROM dailyio WHERE IO='支出' GROUP BY IODate) AS I2
ON D.IODate=I2.IODate

パフォーマンスを考えればもうちょっとチューニングが必要かも

この回答への補足

回答ありがとうございます
試してみたところ
ERROR 1064: You have an error in your SQL syntax.
になりました・・・ん~~何でだろう・・・

補足日時:2008/03/07 10:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す