Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL从2列中选择数据,如果数据不为NULL,则插入视图_Sql_Sql Server_Join_View_Null - Fatal编程技术网

SQL从2列中选择数据,如果数据不为NULL,则插入视图

SQL从2列中选择数据,如果数据不为NULL,则插入视图,sql,sql-server,join,view,null,Sql,Sql Server,Join,View,Null,我有一个从多个表中提取数据的视图。在视图的一列中,我需要插入一个帐户代码,该帐户代码可以在其中一个表的贷方或借方列下找到。如果借方栏中有账户代码,则贷方栏中不会有账户代码,反之亦然。基本上,我需要插入帐户代码,如果它被发现在任何列 由于联合,我无法更改视图列 也许我在用错误的关键字搜索这些信息,但我似乎找不到我需要的 谢谢 用查询更新 SELECT DET_YEAR as [Year], DET_PERIODNUMBR as [Period], DET_TYPE AS [Type], '

我有一个从多个表中提取数据的视图。在视图的一列中,我需要插入一个帐户代码,该帐户代码可以在其中一个表的贷方或借方列下找到。如果借方栏中有账户代码,则贷方栏中不会有账户代码,反之亦然。基本上,我需要插入帐户代码,如果它被发现在任何列

由于联合,我无法更改视图列

也许我在用错误的关键字搜索这些信息,但我似乎找不到我需要的

谢谢

用查询更新

    SELECT
DET_YEAR as [Year],
DET_PERIODNUMBR as [Period],
DET_TYPE AS [Type],
'' AS [Status],
DET_Date AS [Tran Date],
'' AS [Supplier],
'' AS [Supplier Name],
DET_DESCRIPTION as [Description],
DET_DIMENSION3 AS [Department],
'' as [Entry Type],
'' as [Detail],
DET_GROSS as [Value],
DET_COSTHEADER as [Project Code],
CH_NAME as [Project Name], 
DET_COSTCENTRE AS [Project Cost Centre],
'' AS [Analysis Code],
'' AS [Analysis Name],
'' AS [Nominal Code],
'' AS [Account Name],
DET_NOMINALDR as [DebitNominal],
DET_NOMINALCR AS [CreditNominal],
NNAME as [Dr/CrNominalName], 
'' AS POH_ORDER_NUMBR,
DET_BATCH_REF


FROM SL_PL_NL_DETAIL WITH (NOLOCK)
LEFT JOIN CST_COSTHEADER WITH (NOLOCK) ON DET_COSTHEADER = CH_CODE
LEFT JOIN CST_COSTCENTRE WITH (NOLOCK) ON DET_COSTCENTRE = CC_CODE AND DET_COSTHEADER = CC_COPYHEADER
INNER JOIN NL_ACCOUNTS WITH (NOLOCK) ON (DET_NOMINALDR = NCODE OR DET_NOMINALCR = NCODE)

WHERE DET_TYPE IN ('JNL', 'VJL') AND DET_BATCH_FLAG = 0 AND DET_YEAR IN ('C', 'N'))


您可以使用CASE语句-不必查看表,我只是猜测,但您可以这样做:

SELECT ....,
    CASE WHEN credit IS NOT NULL THEN credit ELSE debit END AS account_code,
    -- (etc)

当然,如果列不为null,您可以根据需要使用任何其他条件。

如果我理解正确,您可以使用ISNULL或COALESCE,如下所示

ISNULL(a.column, b.column)
OR
COALESCE(a.column, b.column....)  
--We can define multiple columns but it will return first NOT NULL value
看看这个例子:

CREATE TABLE #testOne(id int identity(1,1), 
    accountDebit varchar(50), accountCredit varchar(50))

insert into #testOne values
(null, '1222-1020')

select * from #testOne

id  accountDebit    accountCredit
1   NULL            1222-1020

select id, 
    isnull(accountDebit, accountCredit) AS account_code 
from #testOne
输出

id  account_code
1   1222-1020

您使用的是哪种dbms?能否向我们展示表结构或相关列子集(如果它们较大)以及您尝试过的内容?我正在使用MSSQL向我们展示一些基本表示例数据、视图定义以及当前和想要的结果。我需要将DET_NOMINALDR或DET_NOMINALCR放入标称代码中,当前结果分布在两列中。ISNULLDET_NOMINALDR,DET_NOMINALCR作为[名义代码]不起作用仅借方被添加到名义代码借方列中有什么值?如果存在0,则您必须将其用作ISNULLNULLIFdebit、0、NULLIFcredit、0或检查空白ISNULLNULLIFdebit、NULLIFcredit,我可能会遇到问题,因为它们是字符串格式,如“1222-1020”。我已使用示例更新了我的答案,请查看并尝试执行相应操作。如果您的列包含0或空白,请使用NULLIF.CASE检查。如果DET_NOMINALDR不为空,则DET_NOMINALDR ELSE DET_NOMINALDR END AS[标称代码],与其他建议的问题不一样。CR和DR列可以为空吗?如果没有,那么您需要使用其他条件来测试它们。如果您想要的帐户代码不存在,它们中会显示什么?我可能会有问题,因为它们是字符串格式的,如“1222-1020”,这很好,但是当帐户代码不存在时,这两列中会显示什么例如,当帐户代码在CR列中时,DR列中有什么?如果CR中有帐户,则DR iis为空或空