sourcecode

여러 개의 "with"를 사용할 수 있습니까?

copyscript 2023. 4. 14. 22:00
반응형

여러 개의 "with"를 사용할 수 있습니까?

예를 들어 다음과 같습니다.

With DependencedIncidents AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
)

With lalala AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
)

...일하지 않는다."Error near With" 입니다.

그리고 먼저 안쪽과 함께 사용하고 싶습니다.진짜야? 아니면 임시 테이블을 사용해야 해?

시험:

With DependencedIncidents AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
),
lalala AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
)

또한 공통 테이블 표현식 정의 내에서 공통 테이블 표현식을 참조할 수 있습니다.심지어 재귀적으로도.아주 깔끔한 속임수로 이어지죠

네, 그냥 이렇게 하면 됩니다.

WITH DependencedIncidents AS
(
  ....
),  
lalala AS
(
  ....
)

반복할 필요는 없습니다.WITH키워드

이 문제는 임시 테이블을 사용하여 해결할 수 있습니다.

WITH DependencedIncidents AS
(
  ....
)

select * INTO #TempTable from DependencedIncidents 
  
with lalala AS
(
  ....
)

select * from lalala

또한 두 번째를 와 함께 쓸 수도 있습니다.두 번째를 "와 함께"로 쓸 수도 있습니다.

모든 작업을 완료한 후 마지막 반환 값 "select * from lalala"를 실행해야 합니다.

언급URL : https://stackoverflow.com/questions/5375634/can-i-use-multiple-with

반응형