[英]Combine the output of two queries into a single query
我想將以下查詢組合成一個 output,我不確定如何使用聯合,因為我在查詢上也有一堆條件。 在最后的 output 中,我還需要從查詢 1 的凈值列中減去查詢 2 的negative_sales 列的結果
SELECT storenumber,
bbbtendertypetext,
SUM(financialamounttendered) - SUM(financialchangeamount) AS NET_VALUE,
COUNT(transactionid) AS Transaction_Count
FROM [AceTLogData].[Tlog].[tender]
WHERE transactiondatetime > '2022-09-21 00:00:00.000'
AND transactiondatetime < '2022-09-22 00:03:00.000'
GROUP BY storenumber, bbbtendertypetext
ORDER BY storenumber
SELECT storenumber,
bbbtendertypetext,
SUM(financialamounttendered) AS negative_Net_Sales,
COUNT(transactionid) AS Transaction_Count
FROM [AceTLogData].[Tlog].[tender_correct]
where transactiondatetime > '2022-09-21 00:00:00.000'
AND transactiondatetime < '2022-09-22 00:03:00.000'
GROUP BY storenumber, bbbtendertypetext
ORDER BY storenumber
例如這樣
select s1.storenumber storenumber
, s2.storenumber storenumber2
, s1.bbbtendertypetext bbbtendertypetext
, s2.bbbtendertypetext bbbtendertypetext2
, s1.NET_VALUE NET_VALUE
, s1.Transaction_Count Transaction_Count
, s2.Transaction_Count Transaction_Count2
, s2.negative_Net_Sales negative_Net_Sales
, s1.NET_VALUE - s2.negative_Net_Sales differnt
from (
SELECT storenumber,
bbbtendertypetext,
SUM(financialamounttendered) - SUM(financialchangeamount) AS NET_VALUE,
COUNT(transactionid) AS Transaction_Count
FROM [AceTLogData].[Tlog].[tender]
WHERE transactiondatetime > '2022-09-21 00:00:00.000'
AND transactiondatetime < '2022-09-22 00:03:00.000'
GROUP BY storenumber, bbbtendertypetext
ORDER BY storenumber
) s1 left join (
SELECT storenumber,
bbbtendertypetext,
SUM(financialamounttendered) AS negative_Net_Sales,
COUNT(transactionid) AS Transaction_Count
FROM [AceTLogData].[Tlog].[tender_correct]
AND transactiondatetime > '2022-09-21 00:00:00.000'
AND transactiondatetime < '2022-09-22 00:03:00.000'
GROUP BY storenumber, bbbtendertypetext
ORDER BY storenumber
) s2 on s1.storenumber = s2.storenumber
請注意,第二個查詢中沒有 where 部分
該查詢以某種方式工作,但它給了我重復的結果。 將嘗試對其進行調整。 bbbtendertypetext bbbtendertypetext2 NET_VALUE AmericanExpress AmericanExpress 2067.16 AmericanExpress Cash 2067.16 AmericanExpress Mastercard 2067.16 AmericanExpress MDSE Credit 2067.16
假設您想組合查詢A
的SUM
值和上面的查詢B
(唯一值SUM
GROUPED BY
storenumber
和bbbtendertypetext
),您可以使用兩個CTE
然后在storenumber
它們INNER JOIN
來獲取結果集並從那里。
如果您想要一個更加非聚合的結果集,請從CTE
下方的主查詢中刪除GROUP BY
和SUM
。
WITH a AS (SELECT storenumber,
bbbtendertypetext,
transactiondatetime,
SUM(financialchangeamount) AS charge_amount,
COUNT(transactionid) AS Transaction_Count
FROM [AceTLogData].[Tlog].[tender]
GROUP BY storenumber, bbbtendertypetext, transactiondatetime),
b AS (SELECT storenumber,
bbbtendertypetext,
transactiondatetime,
SUM(financialamounttendered) AS negative_Net_Sales,
COUNT(transactionid) AS Transaction_Count
FROM [AceTLogData].[Tlog].[tender_correct]
GROUP BY storenumber, bbbtendertypetext, transactiondatetime)
SELECT a.storenumber,
a.bbbtendertypetext,
SUM(a.charge_amount) AS charge_amount,
SUM(b.negative_Net_Sales) AS negative_Net_Sales ,
SUM(a.charge_amount - b.negative_Net_Sales) AS NET_VALUE,
SUM(a.Transaction_Count) AS Transaction_Count
FROM a INNER JOIN b ON a.storenumber = b.storenumber
WHERE a.transactiondatetime
BETWEEN '2022-09-21 00:00:00.000' AND '2022-09-22 00:03:00.000'
GROUP BY a.storenumber, a.bbbtendertypetext
見小提琴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.