Sql 2000数据格式使用group by query

时间:2014-08-06 12:26:57

标签: sql-server sql-server-2000

有一个包含下面提到的示例数据的表。我需要以特定格式获取结果集。

原始表

   org  type    value
    a   1   1000
    a   2   200
    b   1   1020
    b   2   100
    c   1   890
    c   2   20

必填结果集

org     value

a       (1000-2000)/1000
b       (1020-100)/1020
c       (890-20)/890

如何使用SQL 2000实现这一点。我是否需要转向以获取如上所示的组织明智值?

2 个答案:

答案 0 :(得分:1)

没有

select t1.org, (t1.value - t2.value) / t1.value
From myTable t1
inner join myTable t2 on t1.org = t2.org and t1.type = 1 and t2.type = 2

应该这样做,因为每个组织总是有一个类型1和类型2

答案 1 :(得分:1)

CREATE TABLE #tmp (
    Org VARCHAR(50)
    ,[type] INT
    ,value DECIMAL(18, 2)
    )

INSERT #tmp (Org,[type],value)
VALUES ('a',1,1000)
    ,('a',2,200)
    ,('b',1,1020)
    ,('b',2,100)
    ,('c',1,890)
    ,('c',2,20)

SELECT t1.Org
    ,(t1.Value-t2.value) / t1.Value [Math Done]
    ,'('+convert(varchar(10),t1.Value) +'-' 
       + convert(varchar(10),t2.Value)+')/'
       +convert(varchar(10),t1.Value) [Math Shown]
FROM (SELECT Org, Value FROM #tmp WHERE Type = 1) t1
INNER JOIN (SELECT Org, Value FROM #tmp WHERE Type = 2) t2
    ON t1.Org = t2.Org

DROP TABLE #tmp

结果:

Org Math Done               Math Shown
a   0.8000000000000000000   (1000.00-200.00)/1000.00
b   0.9019607843137254901   (1020.00-100.00)/1020.00
c   0.9775280898876404494   (890.00-20.00)/890.00

工作示例,如果您想显示数学而不是仅仅是这样做。