Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 pivot将null转换为零_Sql_Sql Server_Common Table Expression - Fatal编程技术网

Sql pivot将null转换为零

Sql pivot将null转换为零,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,下面我创建了一个2表的事务类型和事务主类型 事务类型。交易类型包含贷方和借方id 则交易类型为包含交易详细信息 transaction_type ----------------- transaction-id|transaction-name 1 |credit 2 |debit transaction_master ----------- transaction-id|date_of_tran

下面我创建了一个2表的事务类型和事务主类型 事务类型。交易类型包含贷方和借方id 则交易类型为包含交易详细信息

   transaction_type
   -----------------
   transaction-id|transaction-name
   1             |credit 
   2             |debit

   transaction_master
   -----------
   transaction-id|date_of_transaction|amount
   1             |2016-01-12         |100  
   2             |2015-12-30         |200
   1             |2016-01-05         |300   
   1             |2015-12-04         |500 
   2             |2015-12-12         |50  
   2             |2015-12-25         |1000    
   1             |2016-01-30         |100    

   normal PIVOT output is
   -----------------------
   YEAR|Jan |Feb |mar |Apr |may |Jun |Jul |Aug |Sep |Oct |Nov |Dec

   2015|null|null|null|null|null|null|null|null|null|null|null|-700

   2016|500 |null|null|null|null|null|null|null|null|null|null|null


   But i want this
   YEAR|Jan |Feb |mar |Apr |may |Jun |Jul |Aug |Sep |Oct |Nov |Dec

   2015|0   |0   |0   |0   |0   |0   |0   |0   |0   |0   |0   |0   

   2016|500 |0   |0   |0   |0   |0   |0   |0   |0   |0   |0   |0  
在上述情况下,“空”和“负”值应为“0”


您可以在以下内容中使用
CASE
ISNULL

with aa as(select year(d.date_of_transaction), 
                  case when isnull(left(datename(month,date_of_transaction),3),0) < 1 then 0 else left(datename(month,date_of_transaction),3) end as month 
以aa为单位(选择年份(交易日期),
如果isnull(左(datename(月,交易的日期),3),0)小于1,则剩余0(datename(月,交易的日期),3)以月结束
您可以在最后的
选择
子句中使用:

[ISNULL]用指定的替换值替换NULL


您可以向我们展示您的查询吗?如果为空(col_name,0),aa为(选择年份(交易日期),左侧(日期名称(交易日期),3)为monthSankar Raj@,我在我的问题中插入此行,您可以编辑您的问题并发布整个查询吗?
with aa as(select year(d.date_of_transaction), 
                  case when isnull(left(datename(month,date_of_transaction),3),0) < 1 then 0 else left(datename(month,date_of_transaction),3) end as month 
;with AA as(
    select 
        year(d.date_of_transaction) AS [year],
        left(datename(month,date_of_transaction),3) as [month],
        sum (case when c. transaction_type like '%c%' then d.Amount else d.Amount*-1 end)as balance
    from 
        transaction_master d join transaction_type c on c.[transaction-id]=d.[transaction-id]
    group by 
        date_of_transaction
 ) 
 select 
    [year],ISNULL(Jan,0) Jan,ISNULL(Feb,0) Feb,ISNULL(Mar,0) Mar,ISNULL(Apr,0) Apr,ISNULL(May,0) May,ISNULL(jun,0) jun,ISNULL(Jul,0) Jul,ISNULL(Aug,0) Aug,ISNULL(Sep,0) Sep,ISNULL(Oct,0) Oct,ISNULL(Nov,0) Nov,ISNULL([Dec],0) [Dec]
 from 
    AA 
    pivot(sum(balance) for [month] in (Jan,Feb,Mar,Apr,May,jun,Jul,Aug,Sep,Oct,Nov,Dec)) as pvt