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 请帮帮我 我试过这个: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
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