簡體   English   中英

在另一個子查詢中使用子查詢中的列並在子查詢中選擇多個列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM