需要帮助使用下面的数据创建查询

时间:2015-07-27 15:55:03

标签: sql-server case

如果PaytypeID = 111则表示交易是通过优惠券支付的(忽略其他PayTypes);所有其他情况表明 - 没有优惠券

SELECT      *
FROM        Payment  

TransID SalesDate   Amount PayTypeID
222222  2014-08-29  10.00  111
222222  2014-08-29  15.00  222
222222  2014-08-29  15.00  333
555555  2014-09-29  10.00  100
555555  2014-09-29  10.00  101
666666  2014-09-29  10.00  105
666666  2014-09-29  10.00  106
777777  2014-10-29  10.00  107

想要输出如下..

TransID SalesDate   Amount CouponUsed
222222  2014-08-29  40.00  1
555555  2014-09-29  20.00  0
666666  2014-09-29  20.00  0
777777  2014-10-29  10.00  0

2 个答案:

答案 0 :(得分:0)

在您的select语句中尝试以下内容

Select TransID, SalesDate, sum(Amount), max(case when PayTypeID=111 then 1 else 0 end) CouponUsed
from Payment
group by TransID, SalesDate

编辑:如果您想按照TransID进行汇总和分组:

sleep `10`

答案 1 :(得分:0)

不确定您想要哪些列,但您可以使用*,....如此

    Select * , case when PayTypeID = 111 then 'Coupon Used' else 'no coupon' end as CouponUsed
    from Payment

你可以从那里稍微调整一下,但是什么时候可以去。