我有一个名为Voucher
的表,其中包含以下列:
V_id big int,
V_Date Date,
V_Type Char(2),
Amount money,
Nature Char(10),
V_No big int,
Ledger_Id var char(20),
现在我想生成一个名为columns的报告,
V_Date, Ledger_Id, V_No, V_Type, Credit_Amount, Debit_Amount.
其中Debit_Amount
和Credit_Amount
来自名为Amount
的同一列,具体取决于条件nature = Credit
,然后金额将进入Credit_Amount
并且在借记卡中,它将在同一行中为0。
如果Nature = debit
然后Amount
将进入Debit_Amount
列并且此行Credit_Amount
中的 jQuery('.board_content').jscroll({
loadingHtml: '<div class="loading_div"><center><img src="layouts/wb10/ajax-loader4.gif" alt="Loading" /></center></div>',
padding: 0,
contentSelector: '.board_list',
autoTriggerUntil: 30,
nextSelector:'.next_button',
callback: function() {
jQuery('.list_container').masonry({
// options
itemSelector: '.list_container',
columnWidth: 50,
});
将为0,则另一个条件相同。
如何在单个查询中完成此操作?或者我需要多次查询吗?
答案 0 :(得分:2)
使用Case when
它会对您有帮助,
select
V_Date,
Ledger_Id,
V_No,
V_Type,
case when Nature = 'Credit' then Amount else 0 end Credit_Amount,
case when Nature = 'Debit' then Amount else 0 end Debit_Amount
from voucher
希望这会有所帮助......
答案 1 :(得分:0)
尝试这个
CASE
WHEN NATURE = 'CREDIT'
THEN AMOUNT
ELSE 0 END AS Credit_Amount,
CASE
WHEN NATURE = 'DEBIT'
THEN AMOUNT
ELSE 0 END AS Debit_Amount
答案 2 :(得分:0)
如果条件包含列的别名,则可以添加两个:
SELECT
*,
IF(Nature='Credit', amount, 0) AS Credit_Amount,
IF(Nature='debit', amount, 0) AS Debit_Amount
FROM <table_name>;
虽然我在MYSQL中尝试了这一点,但在任何DBMS中它都是非常可能的。