使用SQL Server 2000中的视图
Table1
:
id z1 z2 z3 z4 type
--------------------------------------
01A 300 400 300 400 01
2B 300 400 300 400 02
3C 500 300 400 300 01
04A 500 400 500 400 01
05B 400 300 400 300 02
06 150 200 200 150 03
....
Table2
:
type Formula1 Formula2
------------------------------------
01 ((Z1+Z2)/1000)*2 null
02 null ((Z3+Z4)/1000)*2
03 ((Z1+Z2)/1000)*2 ((Z3+Z4)/1000)*2
我想根据table1
公式选择table2
行:
预期输出
Table1
:
id z1 z2 z3 z4 type
-------------------------------------
01A 300 400 null null 01
2B null null 300 400 02
3C 500 300 null null 01
04A 500 400 null null 01
05B null null 400 300 02
06 150 200 200 150 03
目前我正在使用视图,我不想更改为存储过程,因为大多数报表都使用此视图。
如何在sql中做到??
答案 0 :(得分:1)
这是你需要的吗?查询适用于SQL Server 2005,dunno约2000,请检查:
select a.ID,
(CASE WHEN PATINDEX('%Z1%', ISNULL(b.Formula1,'')+ISNULL(b.Formula2,''))<>0 THEN a.Z1 ELSE NULL END) Z1,
(CASE WHEN PATINDEX('%Z2%', ISNULL(b.Formula1,'')+ISNULL(b.Formula2,''))<>0 THEN a.Z2 ELSE NULL END) Z2,
(CASE WHEN PATINDEX('%Z3%', ISNULL(b.Formula1,'')+ISNULL(b.Formula2,''))<>0 THEN a.Z3 ELSE NULL END) Z3,
(CASE WHEN PATINDEX('%Z4%', ISNULL(b.Formula1,'')+ISNULL(b.Formula2,''))<>0 THEN a.Z4 ELSE NULL END) Z4,
b.*
From TABLE1 a inner join TABLE2 b on a.type=b.type