0

複数の mySQL クエリを 1 つの結果テーブルに結合したいと考えています。例:

+---------+--------------+--------------+
| Date    | Order number | Order status |
+---------|--------------|--------------|
| 1/1/13  | 1            | Open         |
| 1/3/13  | 1            | Confirmed    | 
| 2/1/13  | 2            | Open         |
| 2/10/13 | 2            | Confirmed    |
| 2/20/13 | 1            | Shipped      |
| 3/13/13 | 2            | Shipped      |
...

クエリでこの結果テーブルを取得したいと思います。

+-------+--------------+----------------+
| Month | Total orders | Shipped orders |
+-------|--------------|----------------|
| 1/13  | 1            | 0              |
| 2/13  | 2            | 1              |
| 3/13  | 1            | 1              |
+-------+--------------+----------------+

合計注文数は、アクティビティのある注文を反映しており、発送された注文数は一目瞭然です。

これを使用して、「月」と「合計注文」列を含む結果テーブルを取得できます。

date_format('Date', '%c %y') を月として選択し、count(distinct '注文番号') を月ごとのテーブル グループからの合計注文数として選択します。

そして、「月」と「発送済み」の注文列を含む結果テーブルは次のとおりです。

date_format('Date', '%c %y') を月として選択し、count(distinct '注文番号') を出荷済み注文として、'注文ステータス' = '発送済み' の月別グループのテーブルから選択します

これら 2 つの選択クエリを組み合わせて、上記の 1 つのテーブルを取得するにはどうすればよいですか? 「月」を使用して何らかの結合を行う必要があると思いますが、わかりません。

4

1 に答える 1

0

これがSQLFIDDLEのデモです

SELECT 
B.MONTH_YEAR, B.ORDER_CNTS, C.SHIPPED_ORDERS
FROM
(
SELECT MONTH_YEAR , COUNT(ORDERNO) AS ORDER_CNTS
FROM
(
SELECT DISTINCT CONCAT(CAST(MONTH(B.O_DATE) AS CHAR), '/', CAST(YEAR(B.O_DATE)  AS CHAR)) AS MONTH_YEAR , (ORDERNO) AS ORDERNO 
FROM SAMPLE AS B
)
 B
GROUP BY MONTH_YEAR
) AS B
,
(
SELECT MONTH_YEAR , SUM(SHIPPED_ORDERS )AS SHIPPED_ORDERS
FROM
(
SELECT DISTINCT CONCAT(CAST(MONTH(B.O_DATE) AS CHAR), '/', CAST(YEAR(B.O_DATE)  AS CHAR)) AS MONTH_YEAR ,
  (CASE WHEN ORDER_STATUS= "Shipped" THEN 1 ELSE 0 END) AS SHIPPED_ORDERS
FROM SAMPLE AS B
)
 B
GROUP BY MONTH_YEAR
) AS C
WHERE B.MONTH_YEAR = C.MONTH_YEAR
于 2013-11-14T20:35:38.750 に答える