>  Q&A  >  본문

0이 아닌 첫 번째 값만 표시하고 모든 값이 0인 경우 조인된 테이블과 별도의 테이블에 열의 첫 번째 인스턴스를 표시하는 방법이 있나요?

두 테이블은 상당히 크고 내 select 문에는 내가 얻는 것보다 더 많은 값이 있지만 내 질문에 답하기 위해 이 데이터와 쿼리를 단순화할 수 있다고 생각합니다.

이것은 제가 선택한 진술입니다:

으아악

그래서 테이블이 두 개네요. 송장 테이블 및 InvoiceItem 테이블. 각 테이블의 InvoiceNum 열로 결합되어 InvoiceNum 및 Layer 열을 표시합니다

이 쿼리의 결과는 다음과 같습니다.

으아악

내 InvoiceItem 테이블에는 1 InvoiceNum에 할당할 수 있는 여러 행이 있으므로 결과에 InvoiceNum이 중복되어 원하지 않습니다.

이것은 송장 테이블에서 1개의 송장 번호만 나열하려는 결과입니다. 여기서 첫 번째 사례는 InvoiceItem 테이블의 레이어 열에서 0이 아닌 값이고 0이 아닌 값이 없는 경우 , 첫 번째 A 0을 나열하십시오.

다음과 같이 시도해 보세요.

으아악

이 작업을 수행하는 방법을 잘 모르겠습니다. 아니면 서로 다른 두 테이블에 있다는 점을 고려하면 가능할까요?

P粉563831052P粉563831052241일 전324

모든 응답(2)나는 대답할 것이다

  • P粉310931198

    P粉3109311982024-02-22 12:26:01

    가정/이해:

    • 사용됨 sybase 标记,但问题并没有区分 4x 不同的 Sybase RDBMS 产品(ASESQLAnywhereIQAdvantage), 따라서 일반적인 SQL 구문을 사용하겠습니다(예: 4x 제품은 서로 다른 SQL 방언을 가지고 있으며 ASE는 CTE를 지원하지 않습니다)
    • OP의 left (outer) join 的使用,因为提供的输出似乎没有表明 InvoiceItem 답변에 "누락된" 줄이 있다는 것을 이해하지 못합니다.
    • 불분명
    • LayerInvoiceItemNum 列属于哪个表,因此我假设它们属于 InvoiceItem
    최소한의 테이블 정의 및 관련

    문 세트를 추측해 보세요. insert 으아악

    OP의 현재 출력을 생성하는 쿼리:

    으아악

    OP에서 원하는 출력을 생성하기 위한 몇 가지 다른(복잡하고 지저분한) 아이디어:

    으아악

    두 가지 모두 생성됩니다:

    으아악

    참고:

      나에게 출력이 나타나지 않고 OP가 필요성을 보여주었기 때문에 출력이 무엇인지 잘 모르겠습니다.
    • left (外部)join
    • (Sybase)SAP에서 테스트된 모든 쿼리
    • ASE 16.0
    • 회신하다
      0
  • P粉551084295

    P粉5510842952024-02-22 10:50:28

    이 질문은 조금 까다롭습니다.

    Postgres에서 사용해 보세요:

    으아악

    데모

    MySQL 8:

    이것을 시도해 보세요:

    으아악

    회신하다
    0
  • 취소회신하다