Sql server 两个日期之间的工作日数-开始日期问题

Sql server 两个日期之间的工作日数-开始日期问题,sql-server,Sql Server,我需要计算StartDate和EndDate之间的工作日数。我使用下面的方法,虽然效果很好,但我的起始日期必须是表中的“TradeDate”,而不是为起始日期设置的特定日期。如何正确更改“SET@StartDate”以选择表中每条记录的“TradeDate” Declare @StartDate DATEtime Declare @EndDate DATEtime SET @StartDate = ? ? ? SET @EndDate = GETDATE() SELECT (DATEDIFF(d

我需要计算StartDate和EndDate之间的工作日数。我使用下面的方法,虽然效果很好,但我的起始日期必须是表中的“TradeDate”,而不是为起始日期设置的特定日期。如何正确更改“SET@StartDate”以选择表中每条记录的“TradeDate”

Declare @StartDate DATEtime
Declare @EndDate DATEtime
SET
@StartDate = ? ? ?
SET
@EndDate = GETDATE()
SELECT
(DATEDIFF(dd, @StartDate, @EndDate) -1) -(DATEDIFF(wk, @StartDate, @EndDate) * 2) -(
CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END
) -(
CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END
) as DaysOutstanding,
DealTicketReference,
PortfolioCode
from
tbl
where
StatusId = '1'
and Type = '0'

您可以使用
SELECT
语句:

SELECT (DATEDIFF(dd, TradeDate, @EndDate) -1) -
       (DATEDIFF(wk, TradeDate, @EndDate) * 2) -
       (CASE WHEN DATENAME(dw, TradeDate) = 'Sunday' 
             THEN 1 ELSE 0 
        END) -
       (CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' 
             THEN 1 ELSE 0 
        END) as DaysOutstanding,
        DealTicketReference, PortfolioCode
from tbl
where StatusId = '1' and Type = '0';

如果
StatusId&Type
始终具有数值,则不需要生成文本字符串。只需传递
StatusId=1&Type=0

我试过了,但它无法识别TradeDate。错误:列名“TradeDate”无效,但TradeDate绝对是正确的值。示例:交易日期2020-02-04 00:00:00。000@GLOBALJJ. . . 该错误表示在给定的表
tbl
中没有
TradeDate
。所以,您要确保
TradeDate
在表中可用。