두 테이블은 상당히 크고 내 select 문에는 내가 얻는 것보다 더 많은 값이 있지만 내 질문에 답하기 위해 이 데이터와 쿼리를 단순화할 수 있다고 생각합니다.
이것은 제가 선택한 진술입니다:
으아악그래서 테이블이 두 개네요. 송장 테이블 및 InvoiceItem 테이블. 각 테이블의 InvoiceNum 열로 결합되어 InvoiceNum 및 Layer 열을 표시합니다
이 쿼리의 결과는 다음과 같습니다.
으아악내 InvoiceItem 테이블에는 1 InvoiceNum에 할당할 수 있는 여러 행이 있으므로 결과에 InvoiceNum이 중복되어 원하지 않습니다.
이것은 송장 테이블에서 1개의 송장 번호만 나열하려는 결과입니다. 여기서 첫 번째 사례는 InvoiceItem 테이블의 레이어 열에서 0이 아닌 값이고 0이 아닌 값이 없는 경우 , 첫 번째 A 0을 나열하십시오.
다음과 같이 시도해 보세요.
으아악이 작업을 수행하는 방법을 잘 모르겠습니다. 아니면 서로 다른 두 테이블에 있다는 점을 고려하면 가능할까요?
P粉3109311982024-02-22 12:26:01
가정/이해:
sybase
标记,但问题并没有区分 4x 不同的 Sybase RDBMS 产品(ASE
、SQLAnywhere
、IQ
、Advantage
), 따라서 일반적인 SQL 구문을 사용하겠습니다(예: 4x 제품은 서로 다른 SQL 방언을 가지고 있으며 ASE는 CTE를 지원하지 않습니다) left (outer) join
的使用,因为提供的输出似乎没有表明 InvoiceItem
답변에 "누락된" 줄이 있다는 것을 이해하지 못합니다.
Layer
和 InvoiceItemNum
列属于哪个表,因此我假设它们属于 InvoiceItem
문 세트를 추측해 보세요. insert
으아악
으아악
OP에서 원하는 출력을 생성하기 위한 몇 가지 다른(복잡하고 지저분한) 아이디어:으아악
두 가지 모두 생성됩니다:으아악
참고:
left (外部)join
ASE 16.0
P粉5510842952024-02-22 10:50:28
이 질문은 조금 까다롭습니다.
Postgres에서 사용해 보세요:
으아악MySQL 8:
이것을 시도해 보세요:
으아악