简体   繁体   中英

SQL SERVER - Using DATEDIFF with subquery column

I have a query that looks like:

SELECT
    col1
    ,...
    ,col3
    ,(SELECT col3 FROM table where <clause>) AS MinPickTime
    ,(SELECT col3 FROM table where <clause>) AS MaxPickTime
    ,DATEDIFF(d, MinPickTime, MaxPickTime)
FROM table

However the DATEDIFF line does not like the alias columns.

In short, how do I give DATEDIFF an alias column derived by a subquery?

Use derived tables concept to access alias name.

SELECT  col1
    ,...
    ,col3,
     MinPickTime,
     MaxPickTime ,
DATEDIFF(d, MinPickTime, MaxPickTime)
FROM (
SELECT
    col1
    ,...
    ,col3
    ,(SELECT col3 FROM table where <clause>) AS MinPickTime
    ,(SELECT col3 FROM table where <clause>) AS MaxPickTime

FROM table
)z
with temp as (SELECT
    col1
    ,...
    ,col3
    ,(SELECT col3 FROM table where <clause>) AS MinPickTime
    ,(SELECT col3 FROM table where <clause>) AS MaxPickTime
FROM table)

select DATEDIFF(d,MaxPickTime,MinPickTime) from temp

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM