さて、以下のステートメントでは、最初に選択されたものを最初のフィールドとして取得し、追加のフィールドとして使用されている2つのselectステートメントに表示されるpi.planinfoid
代わりに動的変数にしようとしています。1736
また、値が0またはnullの場合でも、2つのselectステートメントによって生成された2つのフィールドを返すためにも必要です。
誰かがこれを理解することができれば、私は事前に感謝します。
SELECT pi.planinfoid,
pi.description,
count(DISTINCT p.planid) AS total,
sum(dm.debitamount) AS Num,
pi.minperiod,
(
SELECT count(p.planid)
FROM plans p,
planinfo pi
WHERE pi.planinfoid = p.planinfoid
AND pi.planinfoid = '1736'
AND p.closed = 0
) AS opened,
(
SELECT count(p.planid)
FROM plans p,
planinfo pi
WHERE pi.planinfoid = p.planinfoid
AND pi.planinfoid = '1736'
AND p.closed = 1
) AS closedd
FROM planinfo pi, plans p, debitmovements dm
WHERE pi.price > 0
AND p.planinfoid = pi.planinfoid
AND dm.planid = p.planid
AND p.servicestart BETWEEN '2012-01-01' AND '2013-01-01'
GROUP BY pi.description,
pi.minperiod,
pi.planinfoid
ORDER BY total DESC
それは実行されましたが、とにかくオープンとクローズが総数に結びついているようには見えません、
planid plan descrip min TOTAL PRICE OPEN CLOSE
1736 Additional IP 1 146 1926 101 545
技術的には、その期間の売りの合計が146の場合、101を開いたままにし、545を閉じることはできません。おそらく、その期間に開いたものだけについて、プルされていない数が開いたり閉じたりします。146オープンの一意のフィールドはp.planidであるか、またはそれぞれが基本的に一意のp.planidを持ちますが、これまでのところ素晴らしい仕事です。