sql server:连接查询多个查询

sql server:连接查询多个查询,sql,sql-server,Sql,Sql Server,缺陷 25-10-2016 25-10-2016 26-10-2016 生产 25-10-2016 26-10-2016 26-10-2016 26-10-2016 如何为以下输出编写查询 输出D_计数p_计数 25-10-2016 2 1 26-10-2016 1 3 请帮帮我 我试过这个: Select QD.defect_time, Count(OD.start_time) as production_count, Count(QD

缺陷 25-10-2016 25-10-2016 26-10-2016

生产 25-10-2016 26-10-2016 26-10-2016 26-10-2016

如何为以下输出编写查询

输出D_计数p_计数 25-10-2016 2 1 26-10-2016 1 3

请帮帮我

我试过这个:

Select 
    QD.defect_time, 
    Count(OD.start_time) as production_count, 
    Count(QD.defect_time) as defect_count 
from QUALITY_DEFECT_1 QD 
JOIN ORDER_DETAILS OD ON QD.order_id = OD.order_id 
group by QD.defect_time

您可以从以下内容开始:

SELECT A.COL1, B.D_COUNT, C.P_COUNT
FROM
(SELECT DISTINCT DEF_COL AS COL1 FROM DEFECT
 UNION 
 SELECT DISTINCT PROD_COL FROM PRODUCTION 
) A
LEFT JOIN (SELECT DEF_COL, COUNT(*) AS D_COUNT FROM DEFECT GROUP BY DEF_COL) B ON A.COL1 = B.DEF_COL
LEFT JOIN (SELECT PROD_COL, COUNT(*) AS P_COUNT FROM PROUCTION GROUP BY PROD_COL) C ON A.COL1 = C.PROD_COL
你需要完全的外部连接


我希望它能为您工作。

不完全理解这个问题,但如果缺陷和生产表不同,那么您可以尝试--

select PRODUCTION As OUTPUT,count(*) P_COUNT from PRODUCTION
group by PRODUCTION


select DEFECT As OUTPUT,count(*) D_COUNT from DEFECT
group by DEFECT 
输出

DEFECT_Date   D_COUNT   P_COUNT
-----------------------------
25-10-2016      2        1
26-10-2016      1        3

你试过什么?你能提供你现有的模式吗?我想写sql查询,它会给我提到的输出:当然,但你已经尝试了什么?我们将帮助您,但我们不是来为您编码的。我尝试了:选择QD.defect\u time,CountOD.start\u time作为生产\u计数,CountQD.defect\u time作为缺陷\u count from QUALITY\u defect\u 1qd加入订单\u详细信息QD.ORDER\u id=OD.ORDER\u id按QD.defect\u time我们可以不使用子查询编写它吗??
select PRODUCTION As OUTPUT,count(*) P_COUNT from PRODUCTION
group by PRODUCTION


select DEFECT As OUTPUT,count(*) D_COUNT from DEFECT
group by DEFECT 
;With DEFECT(DEFECT_Date)
AS
(
SELECT '25-10-2016' Union all
SELECT '25-10-2016' Union all
SELECT '26-10-2016' 
)
,PRODUCTION (PRODUCTION_Date)
AS
(
SELECT '25-10-2016' UNION ALL
SELECT '26-10-2016' UNION ALL
SELECT '26-10-2016' UNION ALL
SELECT '26-10-2016' 
)
,CTe3
AS
(
SELECT DISTINCT DEFECT_Date
    ,COUNT(DEFECT_Date) OVER (
        PARTITION BY DEFECT_Date ORDER BY DEFECT_Date
        ) AS D_COUNT
    ,NULL AS P_COUNT
FROM DEFECT D

UNION ALL

SELECT DISTINCT PRODUCTION_Date
    ,NULL
    ,COUNT(PRODUCTION_Date) OVER (
        PARTITION BY PRODUCTION_Date ORDER BY PRODUCTION_Date
        ) AS P_COUNT
FROM PRODUCTION D )
    ,FINAL AS (
        SELECT DEFECT_Date
            ,D_COUNT
        FROM CTe3
        WHERE D_COUNT IS NOT NULL
        )

SELECT C.DEFECT_Date
      ,F.D_COUNT
      ,c.P_COUNT

FROM CTe3 c
FULL JOIN FINAL F ON C.DEFECT_Date = F.DEFECT_Date
WHERE P_COUNT IS NOT NULL
DEFECT_Date   D_COUNT   P_COUNT
-----------------------------
25-10-2016      2        1
26-10-2016      1        3