作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要做这样的事情,但 SQL Server 2008 不喜欢它。我的查询实际上比这更复杂,我意识到这不是完成我正在做的事情的最佳方式,但我的重点是WITH 语句的功能,而不是 select 和 where 语句。
WITH stuff1 AS ( select name, startdate, id from employees where startdate > 0 )
WITH stuff2 AS ( select name, startdate, id from stuff1 )
select * from stuff2 where id > 10
最佳答案
我一直这样做:
WITH stuff1 AS (
SELECT name
,startdate
,id
FROM employees
WHERE startdate > 0
)
,stuff2 AS (
SELECT name
,startdate
,id
FROM stuff1
)
SELECT *
FROM stuff2
WHERE id > 10
据我所知,我尚未达到 CTE 的限制。
唯一不能做的事情(这非常有用)是在单独的 SELECT 中重用 CTE:
WITH stuff1 AS (
SELECT name
,startdate
,id
FROM employees
WHERE startdate > 0
)
,stuff2 AS (
SELECT name
,startdate
,id
FROM stuff1
)
SELECT *
FROM stuff2
WHERE id > 10
;
SELECT *
FROM stuff2
WHERE id < 10
说。相反,您必须再次复制并粘贴整个 CTE 链。
关于sql - 我可以像我的示例一样在 TSQL 中使用WITH两次来过滤结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489026/
我是一名优秀的程序员,十分优秀!