0

一連の領収書番号を含むこの cargo.or_nos テーブルがあります。status='Cancelled' を除いて、発行されているすべての or を一覧表示して、シリーズをグループに分割したいと考えています。たとえば、このレシート stab 125001-125050 があり、125020 がキャンセルされるため、リストの結果は次のようになります。

+-------------------------------------------------------+
|  OR Start  |    OR End    |   Quantity   |   Amount   |
+-------------------------------------------------------+
| 125001     | 125019       |           19 |            |
+-------------------------------------------------------+
| 125021     | 125050       |           30 |            |
+-------------------------------------------------------+

これは難しいクエリのようです。

4

1 に答える 1

0

読んでくれてありがとう。:) これが私のクエリです (CGI からの他の文字は無視してください):

{.while SELECT `start`,`end`,or_prefix,or_suffix,SUM(a.amount) AS g_total,COUNT(*) AS qcount FROM (SELECT l.id AS `start`,( SELECT MIN(a.id) AS id FROM ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.status!='Cancelled' AND a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE'  AND IF(a.status='Default' AND a.amount=0,0,1)  ) AS a LEFT OUTER JOIN ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.status!='Cancelled' AND a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE'  AND IF(a.status='Default' AND a.amount=0,0,1)    ) AS b ON a.id = b.id - 1 WHERE b.id IS NULL AND a.id >= l.id ) AS `end` FROM ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.status!='Cancelled' AND a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE' AND IF(a.status='Default' AND a.amount=0,0,1)  ) AS l LEFT OUTER JOIN ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE' AND IF(a.status='Default' AND a.amount=0,0,1)  )  AS r ON r.id = l.id - 1 WHERE r.id IS NULL) AS k LEFT JOIN freight.`or_nos` a ON a.`or_no` BETWEEN k.start AND k.end  AND DATE(a.`or_date`)='@user_date`DATE' AND a.log_user =0@user_teller AND IF(a.status='Default' AND a.amount=0,0,1) AND a.status!='Cancelled' GROUP BY `start`}
          {.start}{.x.24.12:end}{.x`p0.40.-5:qcount}{.x`p2.57.-15:g_total}{.asc 255}
{.wend}{.asc 255}
于 2013-08-16T07:47:55.797 に答える