J'ai cette table appelée Online_Transaction et je veux montrer tous les types de transactions et combien de chaque fait de chaque type (achevé, rejeté, en attente d'autorisation) dans un mois spécifique. J'ai cette requête jusqu'à maintenant mais je reçois des résultats répétés des idées?Compte plusieurs lignes dans SQL Server Query
SELECT DISTINCT
TRANSACTION_TYPE_ID ,
YEAR(CREATED_ON) AS YEAR ,
MONTH(CREATED_ON) AS MONTH ,
(SELECT
Count(TRANSACTION_TYPE_ID)
FROM
ONLINE_TRANSACTION
WHERE
ONLINE_TRANSACTION.STATUS_ID = 'COMPLETED' AND MONTH(CREATED_ON) = '2') AS COMPLETED ,
(SELECT
Count(TRANSACTION_TYPE_ID)
FROM
ONLINE_TRANSACTION
WHERE
ONLINE_TRANSACTION.STATUS_ID = 'DECLINED' AND MONTH(CREATED_ON) = '2') AS DECLINED ,
(SELECT
Count(TRANSACTION_TYPE_ID)
FROM
ONLINE_TRANSACTION
WHERE
ONLINE_TRANSACTION.STATUS_ID = 'FAILED' AND MONTH(CREATED_ON) = '2') AS FAILED ,
(SELECT
Count(TRANSACTION_TYPE_ID)
FROM
ONLINE_TRANSACTION
WHERE
ONLINE_TRANSACTION.STATUS_ID = 'PENDING_AUTH' AND MONTH(CREATED_ON) = '2') AS PENDING_AUTH
--(SELECT Count(*) from)
FROM
ONLINE_TRANSACTION
WHERE
MONTH(CREATED_ON) = '2'
GROUP BY
TRANSACTION_TYPE_ID ,
ONLINE_TRANSACTION.CREATED_ON
Et je reçois ces résultats:
TRANSACTION_TYPE_ID YEAR MONTH COMPLETED DECLINED FAILED
------------------------------------ ----------- ----------- ----------- ----------- -------
INSURANCE--TYPE 2009 2 9712 177 0
CHEQUEBOOK-TYPE 2009 2 9712 177 0
CHEQUE-STOP-YPE 2009 2 9712 177 0
PAYMENT-TRANS-TYPE 2009 2 9712 177 0
DOMESTIC-TRANSFER-TYPE 2009 2 9712 177 0
PAYMENT-TRANS-TYPE 2009 2 9712 177 0
INTRA-ACCOUNT-TRANS-TYPE 2009 2 9712 177 0
INTRA-BANK-TRANS-TYPE 2009 2 9712 177 0
STANDING-ORDER-TYPE 2009 2 9712 177 0
STATEMENT-REORDERING TYPE 2009 2 9712 177 0
PAYMENTS-TRANS-TYPE 2009 2 9712 177 0
Comme vous pouvez le voir les résultats sont répétés, wheres dans le tableau, il devrait être différentes valeurs.
Des idées?
Après avoir essayé les réponses ci-dessous ce que je reçois: ce type de résultats SET- il affiche des résultats différents pour chaque type de transaction dans différentes lignes, donc si dire le type de transaction est intra-transfert et i a 10 complété et 2 rejeté, il montrera le complété dans une rangée et le rejeté dans une autre rangée? comment faire votre spectacle dans une ligne par type de transaction
TRANSACTION_TYPE_ID YEAR MONTH REJECTED COMPLETED POSTED
ALPHA-INSURANCE-TRANS-TYPE 2009 2 0 12 0
CHEQUEBOOK-ORDER-TRANS-TYPE 2009 2 0 0 0
CHEQUEBOOK-ORDER-TRANS-TYPE 2009 2 0 52 0
CHEQUEBOOK-ORDER-TRANS-TYPE 2009 2 2 0 0
CHEQUE-STOP-TRANS-TYPE 2009 2 0 3 0
PAYMENT-TRANS-TYPE 2009 2 0 361 0
PAYMENT-TRANS-TYPE 2009 2 1 0 0
DOMESTIC-TRANSFER-TRANS-TYPE 2009 2 0 0 0
DOMESTIC-TRANSFER-TRANS-TYPE 2009 2 0 541 0
DOMESTIC-TRANSFER-TRANS-TYPE 2009 2 6 0 0
la requête ressemble à ceci:
SELECT DISTINCT
TRANSACTION_TYPE_ID ,
YEAR(CREATED_ON) AS YEAR ,
MONTH(CREATED_ON) AS MONTH ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-REJECTED ' THEN 1
ELSE 0
END) AS REJECTED ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-COMPLETED ' THEN 1
ELSE 0
END) AS COMPLETED ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-DECLINDED ' THEN 1
ELSE 0
END) AS DECLINED ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-FAILED' THEN 1
ELSE 0
END) AS FAILED ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-PENDING-AUTH ' THEN 1
ELSE 0
END) AS PENDING_AUTH ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-PENDING-POST ' THEN 1
ELSE 0
END) AS PENDING_POST ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'STATUS-TRANS-PENDING' THEN 1
ELSE 0
END) AS PENDING ,
SUM(CASE ONLINE_TRANSACTION.STATUS_ID
WHEN 'ALPHA-STATUS-TRANS-POSTED' THEN 1
ELSE 0
END) AS POSTED
FROM
ONLINE_TRANSACTION
WHERE
MONTH(CREATED_ON) = '2'
GROUP BY
TRANSACTION_TYPE_ID ,
YEAR(CREATED_ON) ,
MONTH(CREATED_ON) ,
STATUS_ID
@Alex: Qu'avez-vous utilisé pour la mise en forme de la table? – shahkalpesh
@Alex: c'est ce que j'essaie de comprendre? bloc citation? problème –
est comme ci-dessus, je me répéter des lignes pour des résultats vides –