【发布时间】:2009-06-29 05:24:32
【问题描述】:
我有一个名为 Online_Transaction 的表,我想显示特定月份的所有交易类型以及每种类型的交易数量(已完成、拒绝、等待授权)。直到现在我都有这个查询,但我得到重复的结果有什么想法吗?
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
我得到了这些结果:
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
如您所见,结果是重复的,在表格中应该是不同的值。
有什么想法吗?
尝试了下面的答案后,我得到了: 这种类型的结果集-它在不同的行中为每种事务类型显示不同的结果,所以如果说事务类型是内部传输并且我有 10 个已完成和 2 个被拒绝,它将在一行中显示已完成而在另一行中显示被拒绝?您如何在每种交易类型中显示一行
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
查询如下所示:
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:你用什么来格式化表格?
-
@Alex:这就是我想要弄清楚的?块引用?
-
问题如上,我得到空结果的重复行
标签: sql sql-server count