[英]Using a column from a subquery in another subquery & selecting multiple column in subquery
請查看下面的SQL查詢:
我想將列值log_LogId
(第6行)存儲在@startlog
以便稍后在第15行中使用它。或者還有其他方法可以實現此目的嗎?
我無法在第6行中編寫@log_LogId = log_LogId
。它顯示語法錯誤。
另一個問題是如何在第一個子查詢中選擇多個列? 也許像(SELECT TOP 1 log_LogId, log_Cost .....
?
提前致謝。
DECLARE @startlog INT
SELECT
log_VehicleId AS gpsId,
log_LogId AS ignOnLogId,
(SELECT TOP 1
log_LogId ---Set this value to @startlog so that I can use this in "HERE"
--- Also Select another column here
FROM VehicleLog
WHERE log_Eventid = 6012 AND log_LogId > v2.log_LogId
AND log_VehicleId = v2.log_VehicleId
) ignOffLogId,
(SELECT SUM(CAST(log_COG AS FLOAT))
FROM VehicleLog
WHERE log_LogId >= v2.log_LogId
AND log_LogId <= @startlog ---**HERE**
)
from VehicleLog v2
WHERE log_Eventid = 6011 AND log_LogId < 300
您可以按如下方式使用CTE(公用表表達式):
;WITH CTE_V2 AS
(
SELECT
log_VehicleId
, log_LogId
FROM
VehicleLog
WHERE
log_Eventid = 6011 AND log_LogId < 300
)
, CTE_IGN_OFF AS
(
SELECT TOP 1
log_LogId ---Set this value to @startlog so that I can use this in "HERE"
,log_OtherColumn --- Also Select another column here
FROM
VehicleLog
WHERE
log_Eventid = 6012
AND log_LogId > (SELECT MAX(CTE_V2.log_LogId)
FROM CTE_V2 WHERE VehicleId = CTE_V2.log_VehicleId)
)
, CTE_COG AS
(
SELECT
log_VehicleId AS gpsId
, log_LogId AS ignOnLogId
, SUM(CAST(log_COG AS FLOAT)) sum_COG
FROM
VehicleLog
WHERE
log_LogId >= (SELECT MAX(CTE_V2.log_LogId)
FROM CTE_V2 WHERE VehicleId = CTE_V2.log_VehicleId)
AND log_LogId <= (SELECT TOP 1 log_OtherColumn FROM CTE_IGN_OFF)
GROUP BY
log_VehicleId
, log_LogId
)
SELECT * FROM CTE_COG;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.