【发布时间】:2017-02-02 09:27:31
【问题描述】:
我的 Sql Server 数据库中有两个表 pay_tbl 和 bill_tbl,它们的列是
pay_tbl{pay_id typy int --pk, pay_name type varchar} bill_tbl{pay_id type int --> Fk,bill_date type datetime,bill_amount type int,bill-status type varchar}
我正在尝试使用月份名称获取每个 pay_ID 的最后 5 个月的账单历史记录,我尝试了一个运行良好的查询并逐行返回每个月的历史记录,但我不想要这个,它返回给我的结果是这边
pay_ID Month Amount To Pay Bill Status
---------- ------------- -------------- -----------
1 January 5000 paid
1 December 6000 Not Paid
2 January 3000 paid
2 December 800 Not Paid
但我想要这样的结果
pay_ID Month Amount To Pay Bill Status Month Amount To Pay Bill Status
1 January 5000 paid December 6000 Not Paid
2 January 3000 Paid December 800 Not paid
我怎样才能做到这一点?我试过的这个查询返回了我上面的结果
SELECT DATENAME(month, b.bill_date) AS 'Month',b.bill_amount as 'Amount To Pay', b.bill_status AS 'Bill Status'
FROM bill_tbl b
INNER JOIN
pay_tbl AS p ON b.payment_id = p.pay_ID
【问题讨论】:
-
11 月发生了什么以及为什么需要这样的结果
-
更好的是,在您的表示层中执行此操作。如果您在 SQL 查询中确实需要这个,请检查关键字 PIVOT...
-
我只是以 11 月为例,我需要在 gridview 中显示,这意味着每一行都有一个支付 ID
-
在输出中显示的是 5000 年和 2000 年 1 月,但在样本数据 5000 和 3000 中。
-
@mohan111 你有解决方案吗?我刚刚输入了虚拟示例并忘记了具有相同的值,但我确定你明白我想要什么
标签: sql-server database subquery