用于筛选结果集的SQL查询

时间:2012-12-12 10:10:45

标签: sql-server sql-server-2008

我在SQL Server中创建了这个现金表我需要知道什么是货币类型注释,什么是Currecny和总数。

1 = Amount Came
2 = Amount Gone

我希望通过对SQL Query进行分组来得到结果。意味着我是否有1000种货币和货币纸币总数为11 [被认为是Came / Given是“1”]这使得它总计11000

同样的方式我有一个20的货币票据[1 In和1 Given]所以它不应该在所需的输出中,因为没有匹配或我没有任何20的注释。因为我有一个注意到20并给予回20

预期输出

Currency No of Currency Total
1000 -- 11 - 11000
500  -- 1 -- 500
100 -- 1 - 100
50 -- 1 - 50

enter image description here

1 个答案:

答案 0 :(得分:1)

create table currency(curr int,noc int,total int,cg int)

insert into currency 
Values(1000,10,10000,1),(1000,1,1000,1),(500,1,500,1),(100,1,100,1),(50,1,50,1),(20,1,20,1),(10,1,10,1),
(5,1,5,1),(2,1,2,1),(1,1,1,1),(20,1,20,2),(10,1,10,2),(5,1,5,2),(2,1,2,2),(1,1,1,2)


select a.curr,count(*),SUM(Total)
FROM
(
select x.curr curr,x.[no of currency],(x.curr*x.[no of currency]) as Total
From
(select a.curr,a.noc-isnull(b.noc,0) as [no of currency] from 

(select * from currency where cg=1) a

left join

(select * from currency where cg=2) b
on a.curr=b.curr
) x
) a
where a.[no of currency] <>0
group by curr