将两个查询一起使用
Adding two Queries Together Using
我知道之前有人问过这个问题,但我无法理解。
我有 2 个疑问。一个 return 是评分为 10% 的报价的总和,另一个是评分为 20% 的报价的总和。但是,我正在尝试 return 将两个值加在一起的总和。
到目前为止我的查询是:
SELECT SUM(total) FROM (
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "10%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "20%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
但显然我在 FROM 附近有一个不正确的语法。
有什么想法吗?
使用 UNION ALL
的正确语法是
SELECT *
FROM
(
SELECT col1, col2 FROM TABLE1
UNION ALL
SELECT col1, col2 FROM TABLE2
) AS alias
你发布的查询对我来说没有意义,所以不确定如何更正它
您的 2 个查询看起来非常相似,唯一不同的是 UQMLSALESSTAGE
。可能这就是你想要的。而且你不需要使用 union
SELECT SUM(dbo.QuoteLines.UQMLQUOTEVALUE *
CASE WHEN dbo.QuoteLines.UQMLSALESSTAGE = 1 THEN 0.10 ELSE 0.20 END) AS Total
FROM dbo.Quotes
LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1
AND dbo.QuoteLines.UQMLSALESSTAGE IN ( 1 , 2 )
AND dbo.Followups.cmfStatus < 3
AND dbo.QuoteLines.qmlResolutionReasonID = ''
您的脚本有问题。请尝试使用以下脚本-
SELECT SUM(total) FROM (
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS total
FROM dbo.Quotes
LEFT OUTER JOIN dbo.QuoteLines
ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups
ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1
AND dbo.QuoteLines.UQMLSALESSTAGE = 1
AND dbo.Followups.cmfStatus < 3
AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS total
FROM dbo.Quotes
LEFT OUTER JOIN dbo.QuoteLines
ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups
ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1
AND dbo.QuoteLines.UQMLSALESSTAGE = 2
AND dbo.Followups.cmfStatus < 3
AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
没有找到总字段,加入table错误
也许你可以试试这个
SELECT SUM(total) FROM (
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) total
FROM ((select dbo.QuoteLines.UQMLQUOTEVALUE from dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) total
FROM ((select dbo.QuoteLines.UQMLQUOTEVALUE from dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
试试这个:
SELECT SUM(total) FROM (
select
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "total"
From dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
select
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "total"
FROM dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
您在 FROM ()a
中的代码不完整。您可以尝试提取该代码并 运行 它自己。例如:
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "10%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "20%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
该代码无法自行运行,因为缺少 SELECT
。如果您修复该问题,然后将代码重新插入 FROM ()a
,那么我认为您的状态会很好。例如:
SELECT SUM(total) FROM (
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "10%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "20%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
我知道之前有人问过这个问题,但我无法理解。 我有 2 个疑问。一个 return 是评分为 10% 的报价的总和,另一个是评分为 20% 的报价的总和。但是,我正在尝试 return 将两个值加在一起的总和。 到目前为止我的查询是:
SELECT SUM(total) FROM (
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "10%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "20%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
但显然我在 FROM 附近有一个不正确的语法。
有什么想法吗?
使用 UNION ALL
的正确语法是
SELECT *
FROM
(
SELECT col1, col2 FROM TABLE1
UNION ALL
SELECT col1, col2 FROM TABLE2
) AS alias
你发布的查询对我来说没有意义,所以不确定如何更正它
您的 2 个查询看起来非常相似,唯一不同的是 UQMLSALESSTAGE
。可能这就是你想要的。而且你不需要使用 union
SELECT SUM(dbo.QuoteLines.UQMLQUOTEVALUE *
CASE WHEN dbo.QuoteLines.UQMLSALESSTAGE = 1 THEN 0.10 ELSE 0.20 END) AS Total
FROM dbo.Quotes
LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1
AND dbo.QuoteLines.UQMLSALESSTAGE IN ( 1 , 2 )
AND dbo.Followups.cmfStatus < 3
AND dbo.QuoteLines.qmlResolutionReasonID = ''
您的脚本有问题。请尝试使用以下脚本-
SELECT SUM(total) FROM (
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS total
FROM dbo.Quotes
LEFT OUTER JOIN dbo.QuoteLines
ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups
ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1
AND dbo.QuoteLines.UQMLSALESSTAGE = 1
AND dbo.Followups.cmfStatus < 3
AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS total
FROM dbo.Quotes
LEFT OUTER JOIN dbo.QuoteLines
ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups
ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1
AND dbo.QuoteLines.UQMLSALESSTAGE = 2
AND dbo.Followups.cmfStatus < 3
AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
没有找到总字段,加入table错误
也许你可以试试这个
SELECT SUM(total) FROM (
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) total
FROM ((select dbo.QuoteLines.UQMLQUOTEVALUE from dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) total
FROM ((select dbo.QuoteLines.UQMLQUOTEVALUE from dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
试试这个:
SELECT SUM(total) FROM (
select
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "total"
From dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID WHERE dbo.Quotes.qmpClosed = 0
AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
select
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "total"
FROM dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID
LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID
WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a
您在 FROM ()a
中的代码不完整。您可以尝试提取该代码并 运行 它自己。例如:
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "10%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "20%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
该代码无法自行运行,因为缺少 SELECT
。如果您修复该问题,然后将代码重新插入 FROM ()a
,那么我认为您的状态会很好。例如:
SELECT SUM(total) FROM (
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.10) AS "10%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 1 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
UNION ALL
SELECT
SUM(dbo.QuoteLines.UQMLQUOTEVALUE*0.20) AS "20%"
FROM ((dbo.Quotes LEFT OUTER JOIN dbo.QuoteLines ON dbo.Quotes.qmpQuoteID = dbo.QuoteLines.qmlQuoteID) LEFT OUTER JOIN dbo.Followups ON dbo.QuoteLines.qmlQuoteID = dbo.Followups.cmfQuoteID) WHERE dbo.Quotes.qmpClosed = 0 AND dbo.Quotes.UQMPFORWARDEDTOCUSTOMER = -1 AND dbo.QuoteLines.UQMLSALESSTAGE = 2 AND dbo.Followups.cmfStatus < 3 AND dbo.QuoteLines.qmlResolutionReasonID = ''
)a