[英]Using a column from a subquery in another subquery & selecting multiple column in subquery
Please have a look at the SQL query below: 请查看下面的SQL查询:
I want to store the column value log_LogId
(line 6) in @startlog
so that I can use it later in line 15. or is there any other way to achive this? 我想将列值
log_LogId
(第6行)存储在@startlog
以便稍后在第15行中使用它。或者还有其他方法可以实现此目的吗?
I can't write @log_LogId = log_LogId
in line 6. It shows syntax error. 我无法在第6行中编写
@log_LogId = log_LogId
。它显示语法错误。
Another question is how can I select multiple columns in the first subquery? 另一个问题是如何在第一个子查询中选择多个列? perhaps like
(SELECT TOP 1 log_LogId, log_Cost .....
? 也许像
(SELECT TOP 1 log_LogId, log_Cost .....
?
Thanks in Advance. 提前致谢。
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
You can use a CTE (Common Table Expression) as follows: 您可以按如下方式使用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.