2016-04-29 103 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」的查詢。

希望這有助於

諾埃爾