0

我需要为一些从我没有创建的数据库中提取数据的帐户做一个声明。现在这个特定的表有点奇怪,我很难把它拉下来。基本上这是目前的查询......

string query = "SELECT Date, TransCode, Amount, BalanceDebito, BalanceCredito FROM ledger WHERE (DR_Socio = @SocioNum) OR (CR_SOCIO = @SocioNum) ORDER BY Date DESC";

我一直在阅读有关 TRANSACT 和其他内容的信息,但我无法提取一个查询来确定如果 DR_Socio 与 @SocioNum 相同,则 BalanceDebito 成为 Balance 列,或者如果 CR_SOCIO 与 @SocioNum 相同,则名为 BalanceCredit 的列成为 Balance 列,如果 CR_Socio 和 DR_Socio 列都与 @SocioNum 相同,则它不应传递任何值。基本上....

If DR_Socio = @SocioNum THEN
BalanceDebito as Balance 
Else if CR_Socio @SocioNum then
BalanceCredito as Balance
Else If CrSocio and Dr_Socio = @SocioNum then
Do Nothing
End If

这就是它的要点。我需要把它变成一个 SQL 查询。BalanceDebito 和 BalanceCredito 是两个不同的列,我需要将它们作为一个列用于报告目的,因为我正在创建 PDF(上帝保佑 iTextSharp),但我不能有 BalanceDebito 和 BalanceCredito 的两列。这可能吗?我很困惑,不知道如何继续。帮助将不胜感激。我正在使用 C#、ASP.NET、MVC 进行编程,使用 iTextSharp dll 来创建 PDF(效果很好),并使用 SQL Server 2008 来创建数据库。

4

2 回答 2

1

这个查询应该给你你想要的:

SELECT  Date, 
        TransCode, 
        Amount, 
        CASE WHEN DR_Socio = @SocioNum THEN BalanceDebito
        WHEN CR_SOCIO = @SocioNum THEN BalanceCredito END Balance
FROM ledger 
WHERE (DR_Socio = @SocioNum OR CR_SOCIO = @SocioNum)
AND DR_Socio <> CR_SOCIO
ORDER BY [Date] DESC
于 2013-07-05T19:32:21.013 回答
1

一个 CASE 语句应该做你正在寻找的东西:

SELECT

CASE 
    WHEN Cr_Socio = @SocioNum AND Dr_Socio = @SocioNum THEN NULL
    WHEN DR_Socio = @SocioNum THEN BalanceDebito 
    WHEN CR_Socio = @SocioNum THEN BalanceCredito 
END AS Balance 

FROM ...
于 2013-07-05T19:34:03.603 回答