Sql server 2005 在另一个查询中通过新创建的计算列

Sql server 2005 在另一个查询中通过新创建的计算列,sql-server-2005,subquery,left-join,case,calculated-columns,Sql Server 2005,Subquery,Left Join,Case,Calculated Columns,下面我有两个单独的查询,它们运行正常。现在我创建了一个计算列,以提供YMs的工作日计数,并希望将其传递到query1(连接将是query1.Period=query2.YMs) 请参见下面的查询和输出 SELECT Client, ClientGroup, Type, Value, Period, PeriodName, PeriodNumber, ClientName FROM metrics.dbo.vw_KPI_001_Invoice selec

下面我有两个单独的查询,它们运行正常。现在我创建了一个计算列,以提供YMs的工作日计数,并希望将其传递到query1(连接将是query1.Period=query2.YMs) 请参见下面的查询和输出

SELECT        Client, ClientGroup, Type, Value, Period, PeriodName, PeriodNumber, ClientName
FROM            metrics.dbo.vw_KPI_001_Invoice 



select YMs,sum(case when IsWorkDay = 'X' then 1 else 0 end) from IESAONLINE.Dbo.DS_Dates
where Year > '2013'
group by YMs 

Query 1
Client  ClientGroup Type    Value   Period  PeriodName        PeriodNumber   ClientName
0LG0    KarroFoods  Stock   5691.68 201506  Week 06 2015    35  Karro Foods Scunthorpe

Query 2
YMs (No column name)
201401  23

将开展以下工作:

SELECT Client, ClientGroup, Type, Value, Period, PeriodName, PeriodNumber, ClientName, cnt
FROM            metrics.dbo.vw_KPI_001_Invoice q1
INNER JOIN (select YMs,sum(case when IsWorkDay = 'X' then 1 else 0 end) as cnt from IESAONLINE.Dbo.DS_Dates
where Year > '2013'
group by YMs ) q2 ON q1.Period = q2.YMs

如果一个值不总是可用的,那么您可以考虑将内部连接更改为外部连接。