2016-04-06 20 views
0

私は以下のスクリーンショットの結果を提供する次のクエリを持っています。私が達成しようとしているのは、最終結果を各請求書番号の最後のレコードにすることだけです。mysql sqlは各グループの最後のレコードを選択します

グループやサブグループ別に最後のレコードを選択することに関連する他の質問を見てきましたが、私のSQLスキルは、他の質問で提供されたソリューションをどのように適用できるかわかりません。

何か助けていただければ幸いです。

SELECT 
    `Invoice`.Amount AS amount, 
    zuora.convertDateTimeToGMTOffsetDateTime(`Invoice`.CreatedDate) AS created_date, 
    `Invoice`.InvoiceNumber AS invoice_number, 
    RatePlanCharge.chargeModel, 
    RatePlanCharge.chargeType, 
    `InvoiceItem`.`RatePlanChargeId`, 
    CASE 
     WHEN 
      PaymentMethod.type = 'CreditCard' 
     THEN 
      CONCAT(PaymentMethod.creditCardType, 
        ' (', 
        REPLACE(PaymentMethod.creditCardMaskNumber, 
         '*', 
         ''), 
        ')') 
     WHEN 
      PaymentMethod.type = 'PayPal' 
       AND PaymentMethod.paypalEmail != '' 
     THEN 
      IF(PaymentMethod.paypalEmail != '', 
       CONCAT(PaymentMethod.type, 
         ' (', 
         PaymentMethod.paypalEmail, 
         ')'), 
       PaymentMethod.type) 
     WHEN PaymentMethod.type = 'WireTransfer' THEN 'Wire Transfer' 
     ELSE IF(Invoice.Amount = 0, 
      'None Required', 
      IF(PaymentMethod.type, 
       PaymentMethod.type, 
       'Unpaid')) 
    END AS payment_method, 
    IF(RatePlanCharge.chargeModel != 'Discount' 
      AND (RatePlanCharge.chargeType = 'Recurring' 
      OR RatePlanCharge.chargeType = 'Usage'), 
     TRUE, 
     FALSE) AS recurring 
FROM 
    `InvoiceItem` 
     JOIN 
    `Invoice` ON `InvoiceItem`.`InvoiceId` = `Invoice`.`id` 
     LEFT JOIN 
    `RatePlanCharge` ON `RatePlanCharge`.`id` = `InvoiceItem`.`RatePlanChargeId` 
     LEFT JOIN 
    `InvoicePayment` ON `InvoicePayment`.`invoiceId` = `Invoice`.`id` 
     LEFT JOIN 
    `Payment` ON `Payment`.`id` = `InvoicePayment`.`paymentId` 
     LEFT JOIN 
    `PaymentMethod` ON `Payment`.`paymentMethodId` = `PaymentMethod`.`id` 
     LEFT JOIN 
    `CreditBalanceAdjustment` ON `CreditBalanceAdjustment`.`sourceTransactionId` = `Invoice`.`id` 
WHERE 
    `Invoice`.`Status` = 'Posted' 
     AND Invoice.accountid = '2c92c0f84b786da2014bb934ef664f1b' 

これは、以下の結果を提供する。あなたは、単にすることができ、各請求書のための単一の行を取得するには

enter image description here

答えて

0

:私は黄色で強調表示されているだけの記録(請求書番号の各グループの最後のレコード)に、最終的な結果を制限したいのですがクエリの末尾に追加してください
GROUP BY Invoice.InvoiceNumber
しかし、最後の行の基準/プロパティはあなたの投稿からは明らかではありません。それはorinal created_dateのプロパティです(スクリーンショットには、すでに区別できない日付が変換されています)?そうである場合は、最初にインボイス番号で結果セットをソートし、作成した日付を降順で並べ替える必要があります(各請求書の最新のレコードが最初のものとして表示され、グループのcaluseはそれをとるようにします)、
ORDER BY Invoice.InvoiceNumber asc, Invoice.CreatedDate desc GROUP BY Invoice.InvoiceNumber

関連する問題