【发布时间】:2014-03-18 21:20:37
【问题描述】:
我是 SQL 开发者的初学者,并尝试进行此类查询。
我只有一张表,其中所有数据。现在我想要根据计算得到的数据。
表结构如下:
Create table DataTable
(
id numeric(18,0),
DebitNoteNo varchar(20),
TotalAmt numeric(18,0),
Status char(4),
LineNumber numeric(18,0)
)
Insert into DataTable values(1,'DB001',200,'C',1)
Insert into DataTable values(2,'DB001',100,'C',2)
Insert into DataTable values(3,'DB001',300,'C',2)
Insert into DataTable values(4,'DB002',500,'C',1)
Insert into DataTable values(5,'DB002',100,'C',4)
Insert into DataTable values(6,'DB003',200,'S',2)
Insert into DataTable values(7,'DB003',300,'S',4)
Insert into DataTable values(8,'DB003',400,'S',5)
Insert into DataTable values(9,'DB003',200,'C',1)
Insert into DataTable values(10,'DB003',100,'C',3)
Insert into DataTable values(11,'DB003',700,'C',8)
Insert into DataTable values(12,'DB003',100,'C',5)
Insert into DataTable values(13,'DB004',800,'E',1)
Insert into DataTable values(14,'DB004',100,'E',5)
Insert into DataTable values(15,'DB004',200,'E',6)
我想要输出如下:
Distinct
Col1 DebitNoteNoCount TotalLineItem TotalCount
TotalFlagC 3 9 2300
TotalFlagS 1 3 900
TotalFlagE 1 3 1100
现在在这个输出中
第 1 列是固定的,
第 2 列是不同借记单编号
第 3 列是总行数
第 4 列是 TotalAmt 的总和
我的行也是固定的(三行)
col1 是我的 where 条件。
TotalFlagC = where status = 'C'
TotalFlagS = where status = 'S'
我通过联合来执行此操作,但我认为这需要更多时间。所以请给我任何其他的解决方案。
【问题讨论】:
标签: sql sql-server sql-server-2008-r2 sql-server-2012