我試過查找這個,但我不確定我的術語是否正確。我的初始查詢作業正常,但是我想根據第一個查詢的結果進行計算。由于內部聯接和分組依據,從初始查詢中無法執行此操作
我可以通過將此查詢保存為視圖并針對該視圖運行我的第二個查詢來完成此操作。但這并不適合使用。
以這種方式使用兩個查詢的正確措辭是什么,第二個查詢使用第一個查詢的結果。
例子:
Select, column1, column2, column3, column4, SUM(column5) as column5, SUM(column6) as column6, TableB.column7
From TableA
Left Out Join TableB
on TableB.column7 = TableA.column1
Group By column1, column2, column3, column4
Select column1, column2, column3, column4, column5, column6,
(ISNULL (NULLIF(column5 - column6,0) / NULLIF(column5,0),0) * 100) else 0 end as columnGP
from (Previous Query just ran)
如何將結果存盤為變數,資料作為變數保存多長時間?我存盤為變數將從性能方面產生連鎖反應
uj5u.com熱心網友回復:
您可以將第一個查詢用作第二個查詢中的子查詢
Select
column1, column2, column3, column4, column5, column6,
(ISNULL (NULLIF(column5 - column6,0) / NULLIF(column5,0),0) * 100) else 0 end as columnGP
from (
Select, column1, column2, column3, column4, SUM(column5) as column5, SUM(column6) as column6, TableB.column7
From TableA
Left Out Join TableB
on TableB.column7 = TableA.column1
Group By column1, column2, column3, column4
) x
為此,將子查詢括在大括號中,并為其指定一個別名作為表名(此處x)。
我剛剛復制了您的查詢;但是,它們似乎存在語法錯誤。else 0 end看起來像是缺少 case 運算式的結尾。
但是您可以在單個查詢中進行計算
Select
column1, column2, column3, column4,
SUM(column5) as sum_column5, SUM(column6) as sum_column6,
TableB.column7,
CASE WHEN SUM(column5) = 0
THEN 0
ELSE (SUM(column5) - SUM(column6)) / SUM(column5) * 100
END AS columnGP
From
TableA
Left Outer Join TableB
on TableB.column7 = TableA.column1
Group By
column1, column2, column3, column4, TableB.column7
uj5u.com熱心網友回復:
進行嵌套查詢。因此,不要執行兩個查詢,而是執行一個查詢,其中“上一個查詢剛剛運行”被替換為第一個查詢
SELECT column1,
column2,
column3,
column4,
column5,
column6,
(ISNULL (NULLIF(column5 - column6,0) / NULLIF(column5,0),0) * 100) else
0 end as columnGP
FROM (SELECT column1,
column2,
column3,
column4,
SUM(column5) as column5,
SUM(column6) as column6,
TableB.column7
FROM TableA
LEFT OUT JOIN TableB ON TableB.column7 = TableA.column1
GROUP BY column1, column2, column3, column4)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523919.html
標籤:sqlsql服务器子查询
上一篇:查找每天發生的事件數-SQL
下一篇:為什么我沒有得到這個塊的結果?
