有一个包含下面提到的示例数据的表。我需要以特定格式获取结果集。
原始表
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实现这一点。我是否需要转向以获取如上所示的组织明智值?
答案 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
工作示例,如果您想显示数学而不是仅仅是这样做。