Sql 对于所有这些想法,我认为联合是我所寻找的,因为它允许我运行本质上相同的查询,但其中一个子句不同。我唯一的问题是-它是否需要显示这两个语句的所有列,或者我是否只能显示某些列(例如,仅显示联合体第二部分的计划数量),我将继续深入了解这一点,但感谢朝着正确方向推
Sql 对于所有这些想法,我认为联合是我所寻找的,因为它允许我运行本质上相同的查询,但其中一个子句不同。我唯一的问题是-它是否需要显示这两个语句的所有列,或者我是否只能显示某些列(例如,仅显示联合体第二部分的计划数量),我将继续深入了解这一点,但感谢朝着正确方向推,sql,sql-server,join,Sql,Sql Server,Join,对于所有这些想法,我认为联合是我所寻找的,因为它允许我运行本质上相同的查询,但其中一个子句不同。我唯一的问题是-它是否需要显示这两个语句的所有列,或者我是否只能显示某些列(例如,仅显示联合体第二部分的计划数量),我将继续深入了解这一点,但感谢朝着正确方向推进。@user for unions,列签名需要在连接的查询之间匹配,但不一定必须相同。如果有没有意义的列,可以用NULL或常量值替换。 USE PDX_SAP_USER GO SELECT P.PLANT_CODE,
对于所有这些想法,我认为联合是我所寻找的,因为它允许我运行本质上相同的查询,但其中一个子句不同。我唯一的问题是-它是否需要显示这两个语句的所有列,或者我是否只能显示某些列(例如,仅显示联合体第二部分的计划数量),我将继续深入了解这一点,但感谢朝着正确方向推进。@user for unions,列签名需要在连接的查询之间匹配,但不一定必须相同。如果有没有意义的列,可以用NULL或常量值替换。
USE PDX_SAP_USER
GO
SELECT P.PLANT_CODE,
P.STOCK_CATEGORY,
P.MATERIAL,
P.DISTRIBUTION_VERSION_CODE,
P.PERIOD_CODE,
P.REQUIREMENTS_DATE,
P.PLANNED_QTY AS 'REM PLAN QTY',
P.VERSION_IND_FLAG,
P.SIZE_LITERAL,
P.WITHDRAWN_QUANTITY,
P.TECHNICAL_INDEX,
P.PLANNED_QTY + P.WITHDRAWN_QUANTITY AS 'ORIGINAL FCST QTY'
FROM VW_PLANNED_REQMNTS_TXT P
WHERE P.PLANT_CODE IN ('6040','6041')
AND P.STOCK_CATEGORY IN ('A60385000','A60385003')
AND P.DISTRIBUTION_VERSION_CODE IN ('00','01','ZU','Z2')
AND P.REQUIREMENTS_DATE < GETDATE() - 59
AND P.PLANNED_QTY > 0
ORDER BY P.PLANT_CODE,
P.STOCK_CATEGORY,
P.MATERIAL,
P.REQUIREMENTS_DATE,
P.TECHNICAL_INDEX
SELECT * -- <your final query, use Q1.field and Q2.field>
FROM
(SELECT <query1> WHERE <condition1>) Q1
LEFT JOIN
(SELECT <query2> WHERE <condition2>) Q2
-- add more joins if necessary
ON
Q1.pk = Q2.pk
SELECT
PS.ProductShipmnetId
,PS.ShipmentDate
,PS.ProductQty
,CASE
WHEN PS.ShipmentDate BETWEEN GETDATE() AND DATEADD(MONTH, 1, GETDATE())
THEN PS.ProductQty
END AS ProductQtyThisMonth
FROM
ProductShipment PS
WHERE
PS.ShipmentDate > DATEADD(MONTH, -1, GETDATE())
SELECT
PS.ProductShipmnetId
,PS.ShipmentDate
,PS.ProductQty AS ProductQtyAncient
,NULL AS ProductQtyFuturistic
FROM
ProductShipment PS
WHERE
PS.ShipmentDate < DATEADD(YEAR, -1, GETDATE())
UNION ALL
SELECT
PS.ProductShipmnetId
,PS.ShipmentDate
,NULL AS ProductQtyAncient
,PS.ProductQty AS ProductQtyFuturistic
FROM
ProductShipment PS
WHERE
PS.ShipmentDate > DATEADD(YEAR, 1, GETDATE())
SELECT
PS.ProductId
,SUM(CASE WHEN PS.ShipmentDate BETWEEN GETDATE() AND DATEADD(MONTH, 1, GETDATE())
THEN PS.ProductQty END) AS ProductQtyThisMonth
,SUM(CASE WHEN PS.ShipmentDate BETWEEN DATEADD(MONTH, -1, GETDATE()) AND GETDATE()
THEN PS.ProductQty END) AS ProductQtyLastMonth
FROM
ProductShipment PS
WHERE
PS.ShipmentDate BETWEEN DATEADD(MONTH, -1, GETDATE())
AND DATEADD(MONTH, 1, GETDATE())
GROUP BY
PS.ProductId