2016-04-29 53 views
-1

我想确定记录计数之间的差异,我只有两种不同的记录类型。我想说明的日期每个记录类型和组记录计数:想要计算差异记录计数SQL Server 2008中

select 
    CONVERT(VARCHAR(5), aa.RUN_DATE, 1) AS 'RUN_Date', 
    case 
     when aa.SOURCE = 2 
      then 'RD' 
      else 'JD' 
    end as 'Source', 
    COUNT(*) as 'Item_Count' 
from 
    clientdb.inventory aa with(nolock) 
inner join 
    clientdb.record_type bb with(nolock) on aa.REC_TYPE = bb.OBJECT_ID 
where 
    aa.RUN_DATE > '2016-04-15' 
    and aa.CLIENT_NUMBER = 65432 
group by 
    case 
     when aa.SOURCE = 2 
      then 'RD' 
      else 'JD' 
    end, CONVERT(VARCHAR(5), aa.RUN_DATE, 1) 
order by 
    CONVERT(VARCHAR(5), aa.RUN_DATE, 1) desc, 
    case 
     when aa.SOURCE = 2 
      then 'RD' 
      else 'JD' 
    end 

我想,结果出现以某种方式与此类似:

results

使用SQL Server 2008数据库。有人可以帮忙吗?

+0

集[坏习惯踢 - 把NOLOCK到处(http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - 这是***不推荐***到处使用 - 恰恰相反! –

回答

0

这看起来像一个情况,你可以使用UNPIVOT

这是你假设可以将数据汇总到类似于我在下面创建一个结构...

RUN_Date JD   RD   Difference 
---------- ----------- ----------- ----------- 
2016-04-29 163   263   100 
2016-04-28 178   271   93 
2016-04-27 95   271   176 

对于这个例子的目的,下面的脚本将创建表...

create table BaseSummary 
(
    RUN_Date date, 
    JD int, 
    RD int, 
    Difference int 
) 

insert into BaseSummary values ('04/29/2016', 163, 263, 100) 
insert into BaseSummary values ('04/28/2016', 178, 271, 93) 
insert into BaseSummary values ('04/27/2016', 95, 271, 176) 

下面是使用UNPIVOT让你在找什么...

select RUN_Date, left(Source, 16) as Source, Item_Count 
from 
(
    select RUN_Date, JD, RD, Difference 
    from BaseSummary 
) p 
UNPIVOT 
(
    Item_Count for Source in 
     (JD, RD, Difference) 
) as unpvt 
order by RUN_Date desc 
的SQL语句

其中产量这...

RUN_Date Source   Item_Count 
---------- ---------------- ----------- 
2016-04-29 JD    163 
2016-04-29 RD    263 
2016-04-29 Difference  100 
2016-04-28 JD    178 
2016-04-28 RD    271 
2016-04-28 Difference  93 
2016-04-27 JD    95 
2016-04-27 RD    271 
2016-04-27 Difference  176 

所以,你可以概括你的数据它插入到表或甚至一个临时表,并与您的替换表“BaseSummary”。我没有测试过这个,但是我没有看到任何理由,为什么你不能用你的总结查询替换别名为“p”的查询。

希望这有助于

诺埃尔