Les deux tables sont assez volumineuses et mon instruction select a plus de valeurs que ce que j'obtiens, mais je pense pouvoir simplifier ces données et cette requête afin de répondre à ma question.
Voici ma déclaration de choix :
SELECT invoice.InvoiceNum, Layer, InvoiceItemNum FROM (INVOICE left outer join InvoiceItem item ON item.InvoiceNum = Invoice.InvoiceNum ) ORDER BY invoice.InvoiceNum
J'ai donc deux tables. Table de facture et table InvoiceItem. Ils sont rejoints par la colonne InvoiceNum dans chaque tableau et affichent les colonnes InvoiceNum et Layer
Voici les résultats de cette requête :
InvoiceNum | Layer | InvoiceItemNum 1 | 10 | 1 1 | 0 | 2 1 | 7 | 3 1 | 0 | 4 2 | 0 | 1 2 | 3 | 2 3 | 0 | 1 3 | 0 | 2 3 | 0 | 3 4 | 0 | 1 4 | 0 | 2 4 | 5 | 3
Étant donné que ma table InvoiceItem comporte plusieurs lignes pouvant être attribuées à 1 InvoiceNum, cela entraîne des InvoiceNums en double dans mes résultats, ce que je ne souhaite pas.
C'est le résultat que j'essaie d'obtenir, lister un seul numéro de facture de la table des factures, où le premier cas est une valeur non nulle de la colonne couche de la table InvoiceItem, et s'il n'y a pas de valeur non nulle , listez le premier A zéro.
Essayez quelque chose comme ceci :
InvoiceNum | Layer | InvoiceItemNum 1 | 10 | 1 2 | 3 | 2 3 | 0 | 1 4 | 5 | 3
Je ne sais tout simplement pas comment faire cela, ni si c'est même possible étant donné qu'ils sont sur deux tables différentes.
Assomption/Compréhension :
sybase
标记,但问题并没有区分 4x 不同的 Sybase RDBMS 产品(ASE
、SQLAnywhere
、IQ
、Advantage
cependant), je m'en tiendrai donc à la syntaxe SQL commune (c'est-à-dire que les produits 4x ont des dialectes SQL différents ; de plus, ASE ne prend pas en charge CTE)left (outer) join
的使用,因为提供的输出似乎没有表明InvoiceItem
Layer
和InvoiceItemNum
列属于哪个表,因此我假设它们属于InvoiceItem
associés :
La requête qui génère la sortie actuelle de l'OP :insert
Je ne sais pas quel devrait être le résultat car il n'apparaît pas (pour moi) et le PO a démontré le besoin-
Toutes les requêtes testées dans (Sybase)SAP -
left (外部)join
ASE 16.0
Cette question est un peu délicate :
Essayez-le dans Postgres :
Démo
Dans MySQL 8 :
Essayez ceci :