组合两个sql脚本
我从两张表中进行选择:组合两个sql脚本,sql,ms-access,Sql,Ms Access,我从两张表中进行选择: SELECT SUM(S2.F64) as sumAll FROM someTABLE1 S1 LEFT OUTER JOIN someTABLE2 S2 ON S2.F32 = S1.F32 WHERE S2.F01 = '1006' and S2.F68='ORDER' AND S1.F67='ITEM' 现在我想从另一个select中获取S1.F01的值:类似这样的值 SELECT S3.F01 FROM someTABLE3 S3 WHERE
SELECT SUM(S2.F64) as sumAll
FROM someTABLE1 S1
LEFT OUTER JOIN someTABLE2 S2 ON S2.F32 = S1.F32
WHERE S2.F01 = '1006'
and S2.F68='ORDER' AND S1.F67='ITEM'
现在我想从另一个select中获取S1.F01的值:类似这样的值
SELECT S3.F01
FROM someTABLE3 S3
WHERE "something..."
所以我想要这样的东西:
SELECT SUM(S1.F64) as sumAll, S3.F01
FROM someTABLE3 S3
LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01
LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32
WHERE S1.F01 = S3_F01
and S2.F1068='ORDER' AND S1.F1067='ITEM'
但是,我希望得到S3中的所有项,并只填充sumAll中条件匹配的列
所以我想要这样的东西(伪代码):
还有其他方法吗?您只是在寻找
分组依据吗
SELECT SUM(S1.F64) as sumAll, S3.F01
FROM someTABLE3 S3
LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01
LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32
WHERE S2.F1068='ORDER' AND S1.F1067='ITEM'
GROUP BY S3.F01
编辑-将where条件移动到连接
SELECT SUM(S1.F64) as sumAll, S3.F01
FROM someTABLE3 S3
LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01 AND S1.F1067='ITEM'
LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 AND S2.F1068='ORDER'
GROUP BY S3.F01
您只是在寻找分组依据吗
SELECT SUM(S1.F64) as sumAll, S3.F01
FROM someTABLE3 S3
LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01
LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32
WHERE S2.F1068='ORDER' AND S1.F1067='ITEM'
GROUP BY S3.F01
编辑-将where条件移动到连接
SELECT SUM(S1.F64) as sumAll, S3.F01
FROM someTABLE3 S3
LEFT OUTER JOIN someTABLE1 S1 ON S1.F01 = S3.F01 AND S1.F1067='ITEM'
LEFT OUTER JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 AND S2.F1068='ORDER'
GROUP BY S3.F01
我不能绝对肯定我是否完全理解你,但这里有一种方法可以做到这一点:
SELECT S3.*, SQ.sumValue
FROM someTABLE3 S3
LEFT JOIN( SELECT F01,SUM(F64)
FROM someTable1
WHERE F1067='ITEM'
GROUP BY F01) SQ ON SQ.F01 = S3.F01
LEFT JOIN someTable1 AS S1 ON S1.F01 = S3.F01
LEFT JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 AND S2.F1068='ORDER'
在table1
上执行一个内部查询,通过F01
获得SUM(F64)组。这样,当您从table3
执行左联接时,您将得到所有table3
和K或所需的SUM
然后对于与表2
的左连接,我首先与表1
进行左连接,因为我不知道是否可以将表2
与表3
关联起来
这有点让人困惑,但我希望你能理解这个方法,我不确定我是否完全理解你,但这里有一个方法可以做到这一点:
SELECT S3.*, SQ.sumValue
FROM someTABLE3 S3
LEFT JOIN( SELECT F01,SUM(F64)
FROM someTable1
WHERE F1067='ITEM'
GROUP BY F01) SQ ON SQ.F01 = S3.F01
LEFT JOIN someTable1 AS S1 ON S1.F01 = S3.F01
LEFT JOIN someTABLE2 AS S2 ON S1.F32 = S2.F32 AND S2.F1068='ORDER'
在table1
上执行一个内部查询,通过F01
获得SUM(F64)组。这样,当您从table3
执行左联接时,您将得到所有table3
和K或所需的SUM
然后对于与表2
的左连接,我首先与表1
进行左连接,因为我不知道是否可以将表2
与表3
关联起来
这有点令人困惑,但我希望您理解这种方法我不能很好地理解您的需求,但是当您有一个聚合函数(如SUM)并且需要其他列时,您必须按另一列进行分组。但我不明白这是否是你想要的。也许添加表schemma、一些示例数据和预期结果可以帮助我们帮助您。看看它是否适合你的需要。否则,可能会添加结构和一些示例数据,以便于帮助您。我不能很好地理解您的需求,但当您有一个聚合函数(如SUM)并且需要其他列时,您必须按另一列进行分组。但我不明白这是否是你想要的。也许添加表schemma、一些示例数据和预期结果可以帮助我们帮助您。看看它是否适合你的需要。否则,可能会添加结构和一些示例数据,以使其更容易帮助您。不,不是真的,所以我想从S3中选择所有内容(无论条件S1.F1067='ITEM'是否匹配)然后只有S1.F1067='ITEM'表中的总和,其中S1.F1067='ITEM'不,它再次只给出了S1.F1067='ITEM'不正确的行,所以我想要的是从S3中选择所有内容(无论条件S1.F1067='ITEM'是否匹配)然后只有S1.F1067='ITEM'中的表S1的总和,它再次只给出S1.F1067='ITEM'中的行