다른 테이블의 select 문을 기반으로하는 where 절

크리스

작성중인 쿼리에 대한 도움이 필요합니다. 기본적으로 한 테이블에서 모든 GRNID를 선택하고 싶지만 다른 테이블의 날짜 사이에 있어야합니다.

따라서 ABSPeriodEndDate 테이블에서 찾은 두 날짜 사이의 모든 GRN을 원합니다. between 절의 시작 날짜를 찾으려면 MAX 기간을 찾은 다음 마이너스 1과 최대 연도를 찾아야합니다.

between 절의 종료 날짜를 찾으려면 최대 기간과 연도를 모두 찾아야합니다. 하지만 DateStamp 열이 between 절에 대한 결과를 반환하기를 원합니다.

이 문제를 해결하는 방법에 대한 아이디어가 내가 원하는대로 작동하지 않는 것 같습니다.

내 쿼리는 다음과 같습니다.

SELECT tblGRNItem.GRNID 
FROM tblGRNItem
INNER JOIN ABSPeriodEndDates ON tblGRNItem.DateCreated = ABSPeriodEndDates.DateStamp
WHERE tblGRNItem.DateCreated BETWEEN
SELECT ABSPeriodEndDates.DateStamp FROM ABSPeriodEndDates WHERE ABSPeriodEndDates.DateStamp = (SELECT MAX(ABSPeriodEndDates.Period)-1 FROM ABSPeriodEndDates) 
AND ABSPeriodEndDates.Year = (SELECT MAX(ABSPeriodEndDates.Year))) 
AND 
SELECT ABSPeriodEndDates.DateStamp FROM ABSPeriodEndDates WHERE ABSPeriodEndDates.DateStamp = (SELECT MAX(ABSPeriodEndDates.Period) FROM ABSPeriodEndDates) 
AND ABSPeriodEndDates.Year = (SELECT MAX(ABSPeriodEndDates.Year)))

참고 : ABSPeriodEndDates의 DataStamp는 datetime2 데이터 유형이고 tblGRNItem의 DateCreated는 datetime 데이터 유형입니다.

예제 데이터 :

tblGRNItem                          ABSPeriodEndDates

GRNID || DateCreated                Year  || Period  || DateStamp
1     || 01/01/2015                 2015  ||   1     || 01/01/2015 00:00:01
2     || 05/01/2015                 2015  ||   1     || 01/01/2015 00:00:01
3     || 06/02/2015                 2015  ||   2     || 01/02/2015 00:00:01
4     || 09/02/2015                 2015  ||   2     || 01/02/2015 00:00:01
5     || 19/02/2015                 2015  ||   2     || 01/02/2015 00:00:01
6     || 16/03/2015                 2015  ||   3     || 01/03/2015 00:00:01

따라서 가장 큰 기간 빼기 1은 2이고 가장 큰 기간은 3이기 때문에 날짜 스탬프 01/02/2015 00:00:01과 01/03/2015 00:00:01 사이의 tblGRNItem에서 모든 GRNID를 가져오고 싶습니다. 데이터 유형은 tblGRNitem의 datetime 및 ABSPeriodEndDates의 datetime2이므로 결과는 다음과 같아야합니다.

3     || 06/02/2015      
4     || 09/02/2015               
5     || 19/02/2015  

미리 감사드립니다

Shnugo

데이터를 모르면 답을 줄 수 없습니다. ABSPeriodEndDates와 tblGrnItem 사이에 연결이없는 것처럼 보입니다. 당신은 단지 최신 기간의 범위를 찾고 싶습니까?

이런 식으로 할 수 있습니다.

 WITH MaxDat AS
(
    SELECT MAX(DateStamp) AS MaxDatFound
    FROM ABSPeriodEndDates
)
,MinDat AS
(
    SELECT TOP 1 DateStamp AS MinDatFound
    FROM ABSPeriodEndDates
    WHERE DateStamp<(SELECT MaxDatFound FROM MaxDat)
    ORDER BY DateStamp DESC 
)
SELECT * 
FROM  tblGRNItem
WHERE DateCreated BETWEEN (SELECT MinDatFound FROM MinDat) AND (SELECT MaxDatFound FROM MaxDat)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

NOT IN을 사용하는 다른 테이블의 WHERE 절

분류에서Dev

3 개의 다른 테이블을 사용하는 SELECT 절

분류에서Dev

동일한 WHERE 절을 가진 두 개의 다른 테이블에서 SELECT?

분류에서Dev

다른 테이블의 값을 기반으로 테이블을 업데이트하는 MySQL 절차

분류에서Dev

where 절이 다른 두 테이블을 하나로 병합

분류에서Dev

MySQL을 사용하여 SELECT 열을 WHERE 절로 사용하여 다른 테이블의 행 수를 얻는 방법

분류에서Dev

2 개의 select 문을 다른 where 절 sqlserver와 결합

분류에서Dev

두 번째 테이블의 WHERE 절을 기반으로 INSERT INTO

분류에서Dev

둘 이상의 값을 반환하는 Where 절의 Select 문

분류에서Dev

람다 식 select 및 where 절을 사용하여 여러 테이블 조인

분류에서Dev

MySQL의 WHERE 절을 기반으로 다른 값으로 중복 UPDATE 생성

분류에서Dev

다른 테이블의 값을 기반으로 값을 선택하는 SELECT 쿼리

분류에서Dev

where 절을 사용하여 한 테이블에서 다른 테이블로 데이터 전송 mysql

분류에서Dev

SQL SELECT를 사용하여 다른 테이블의 특정 행을 기반으로 테이블을 쿼리하는 방법

분류에서Dev

열에 where 절이있는 SELECT 문

분류에서Dev

다른 테이블 열의 값을 기반으로하는 쿼리 테이블

분류에서Dev

datetime 형식을 where 절 내에서 시간 형식으로 변환하여 다른 테이블과 비교

분류에서Dev

where 절 sql의 select 문

분류에서Dev

where 절의 SQL select 문

분류에서Dev

테이블을 교차 결합하고 교차 결합의 where 절에서 select 구문의 필드를 사용하는 방법

분류에서Dev

Sqlite는 where 절 android를 기반으로 열을 업데이트합니다.

분류에서Dev

동일한 테이블이지만 다른 WHERE 절에서 두 개의 SELECT 쿼리 결합

분류에서Dev

다른 쿼리를 기반으로하는 mysql where 절

분류에서Dev

C # linq의 Where 절을 데이터 테이블로

분류에서Dev

SQL Server의 null 및 null이 아닌 열을 기반으로하는 Where 절

분류에서Dev

WHERE 절의 MySQL 다중 테이블

분류에서Dev

T-SQL-두 테이블의 결과를 서로 다른 두 WHERE 절로 결합하는 방법

분류에서Dev

where 절을 사용하여 C #의 다른 배열을 반복하는 LINQ

분류에서Dev

선택한 옵션을 기반으로하는 SQL의 조건부 Where 절

Related 관련 기사

  1. 1

    NOT IN을 사용하는 다른 테이블의 WHERE 절

  2. 2

    3 개의 다른 테이블을 사용하는 SELECT 절

  3. 3

    동일한 WHERE 절을 가진 두 개의 다른 테이블에서 SELECT?

  4. 4

    다른 테이블의 값을 기반으로 테이블을 업데이트하는 MySQL 절차

  5. 5

    where 절이 다른 두 테이블을 하나로 병합

  6. 6

    MySQL을 사용하여 SELECT 열을 WHERE 절로 사용하여 다른 테이블의 행 수를 얻는 방법

  7. 7

    2 개의 select 문을 다른 where 절 sqlserver와 결합

  8. 8

    두 번째 테이블의 WHERE 절을 기반으로 INSERT INTO

  9. 9

    둘 이상의 값을 반환하는 Where 절의 Select 문

  10. 10

    람다 식 select 및 where 절을 사용하여 여러 테이블 조인

  11. 11

    MySQL의 WHERE 절을 기반으로 다른 값으로 중복 UPDATE 생성

  12. 12

    다른 테이블의 값을 기반으로 값을 선택하는 SELECT 쿼리

  13. 13

    where 절을 사용하여 한 테이블에서 다른 테이블로 데이터 전송 mysql

  14. 14

    SQL SELECT를 사용하여 다른 테이블의 특정 행을 기반으로 테이블을 쿼리하는 방법

  15. 15

    열에 where 절이있는 SELECT 문

  16. 16

    다른 테이블 열의 값을 기반으로하는 쿼리 테이블

  17. 17

    datetime 형식을 where 절 내에서 시간 형식으로 변환하여 다른 테이블과 비교

  18. 18

    where 절 sql의 select 문

  19. 19

    where 절의 SQL select 문

  20. 20

    테이블을 교차 결합하고 교차 결합의 where 절에서 select 구문의 필드를 사용하는 방법

  21. 21

    Sqlite는 where 절 android를 기반으로 열을 업데이트합니다.

  22. 22

    동일한 테이블이지만 다른 WHERE 절에서 두 개의 SELECT 쿼리 결합

  23. 23

    다른 쿼리를 기반으로하는 mysql where 절

  24. 24

    C # linq의 Where 절을 데이터 테이블로

  25. 25

    SQL Server의 null 및 null이 아닌 열을 기반으로하는 Where 절

  26. 26

    WHERE 절의 MySQL 다중 테이블

  27. 27

    T-SQL-두 테이블의 결과를 서로 다른 두 WHERE 절로 결합하는 방법

  28. 28

    where 절을 사용하여 C #의 다른 배열을 반복하는 LINQ

  29. 29

    선택한 옵션을 기반으로하는 SQL의 조건부 Where 절

뜨겁다태그

보관