作者cutekid (可爱小孩子)
看板Database
标题Re: [SQL ] PIVOT 语法问题
时间Wed Nov 14 20:04:14 2018
select 日期,
isnull([现金],0) + isnull([信用卡],0) as 金额,
isnull([现金],0) as 现金,
isnull([信用卡],0) as 信用卡
from (
select left(Orderno,8) as 日期,
sum(付款金额) as 付款金额,
付款方式
from B
group by left(Orderno,8),付款方式
) as t
pivot (
sum(付款金额) for 付款方式 in ([现金],[信用卡])
) as pvt
※ 引述《laler (Jacky)》之铭言:
: 资料库名称:Ms-SQL
: 资料库版本:2008
: 内容/问题描述:
: 资料Table A
: Orderno Time Price
: -------------------------------
: 2018110101 20181101 100
: 2018110102 20181101 200
: 2018110201 20181102 300
: 2018110202 20181102 400
: 资料Table B
: Orderno 付款方式 付款金额
: -------------------------------
: 2018110101 现金 100
: 2018110102 信用卡 100
: 2018110102 现金 100
: 2018110201 现金 300
: 2018110202 信用 400
: 想要达查询是
: 日期 金额 现金 信用卡
: -------------------------------
: 20181101 300 200 100
: 20181102 700 300 400
: 用Access语法可以成功
: transform 付款金额
: Select 日期,Sum(Price) from A join B on A.orderno = B.orderno
: Group by 日期
: PIVOT 付款方式
: 但是SQL语法我试出来的结果是
: 日期 金额 现金 信用卡
: -------------------------------
: 20181101 200 200 null
: 20181101 100 null 100
: 20181102 300 300 null
: 20181102 400 null 400
: 以下是我目前的语法
: Select * from
: (Select 日期,Sum(Price),Sum(付款金额)
: from A join B on A.orderno = B.orderno
: Group by 日期,付款方式
: ) as temp
: PIVOT (SUM(付款金额)
: FOR 付款方式
: IN ([现金],[信用卡]))
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.168.16.234
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1542197056.A.9B1.html