向复杂SQL查询添加联接
我有一个现有的SQL查询,需要向其中添加一个联接,这样,只有当另一个表中的列的值与联接指定的值相同时,才会返回此查询的结果。我以前做过连接,但它们总是基于更简单的查询。我只是不确定在哪里插入连接,我尝试过的每件事都有语法问题。我想用英语说: 现有查询…连接另一个表,其中ANOTHERTABLE.COLUMNNAME=“SOMEVALUE” 查询是:向复杂SQL查询添加联接,sql,join,Sql,Join,我有一个现有的SQL查询,需要向其中添加一个联接,这样,只有当另一个表中的列的值与联接指定的值相同时,才会返回此查询的结果。我以前做过连接,但它们总是基于更简单的查询。我只是不确定在哪里插入连接,我尝试过的每件事都有语法问题。我想用英语说: 现有查询…连接另一个表,其中ANOTHERTABLE.COLUMNNAME=“SOMEVALUE” 查询是: ; WITH cte_DateFormat AS (SELECT ServerName, CONVERT(DATE, Date
; WITH cte_DateFormat AS (SELECT ServerName, CONVERT(DATE, Date, 103) AS Date, [Capacity(GB)], [Free Space (GB)], Region
FROM [Some_Table]), cte_Rank AS
(SELECT ROW_NUMBER() OVER (PARTITION BY ServerName, CAST(YEAR(Date) AS VARCHAR(4)) + CAST(MONTH(Date) AS VARCHAR(2))
ORDER BY Date DESC) AS ID, Region, ServerName, Date, [Capacity (GB)], [Free Space (GB)]
FROM cte_DateFormat)
SELECT Region, ServerName, Date, [Capacity (GB)], [Free Space (GB)]
FROM cte_Rank
WHERE ID = 1
ORDER BY Date DESC, Region DESC
听起来好像你不想加入,你想要求在另一个表中存在一个值。因此,存在以下用途:
; WITH cte_DateFormat AS (...) , cte_Rank AS (...)
SELECT Region, ServerName, Date, [Capacity (GB)], [Free Space (GB)]
FROM cte_Rank
WHERE ID = 1
AND EXISTS
(
select *
from anothertable
where anothertable.servername = cte_Rank.ServerName
and ... -- some other criteria if needed
)
ORDER BY Date DESC, Region DESC
您可以使用sqlfiddle来放置示例表吗?您想连接表的哪一列
cte_rank
?与列“ServerName”连接cte_DateFormat和cte_rank都是cte。您可以像加入表一样加入其中任何一个。请看这里: