Sql server 2008 要计算SQL Server 2008中的差异记录计数吗
我试图确定记录计数之间的差异,我只有两种不同的记录类型。我想按日期显示每个记录类型和组的记录计数:Sql server 2008 要计算SQL Server 2008中的差异记录计数吗,sql-server-2008,count,record,subtraction,Sql Server 2008,Count,Record,Subtraction,我试图确定记录计数之间的差异,我只有两种不同的记录类型。我想按日期显示每个记录类型和组的记录计数: 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
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
我希望结果以类似的方式显示:
使用SQLServer2008数据库。有人能帮忙吗?这似乎是一种你可以使用的情况 这是假设您可以将您的数据汇总为类似于我在下面创建的结构
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获取您要查找的内容的SQL语句
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
这就产生了
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”的查询
希望这有帮助
NoelSet-不建议在任何地方都使用它-恰恰相反!