日期:2014-05-19  浏览次数:20536 次

比较值大小的问题
相比较两个标中的值,   如果A   表中的值小于T表,则O表中对应的值为0;反之,O表中对应的值为15,
例如:A表中AAA   第一周的值为1000,   T表中AAA第一周的值为900,   则O表中AAA第一周的值为15
请问如何写view   来实现O表?

A
组       第一周       第二周     第三周
AAA       1000           800           900
BBB       1200             1000         650  
ccc       800           1000         1100

T
组       第一周       第二周     第三周
AAA       900           900           900
BBB       1000             1000         1000  
ccc       900           1000         1100


O
组       第一周       第二周     第三周
AAA       15           0               15
BBB       15                 15             0
ccc       0           15             15



------解决方案--------------------
有點錯誤,修改下

--建立測試環境
Create Table A
(组 Varchar(10),
第一周 Int,
第二周 Int,
第三周 Int)
Insert A Select 'AAA ', 1000, 800, 900
Union All Select 'BBB ', 1200, 1000, 650
Union All Select 'ccc ', 800, 1000, 1100

Create Table T
(组 Varchar(10),
第一周 Int,
第二周 Int,
第三周 Int)
Insert T Select 'AAA ', 900, 900, 900
Union All Select 'BBB ', 1000, 1000, 1000
Union All Select 'ccc ', 900, 1000, 1100
GO
--建立視圖
Create View V_TEST
As
Select
A.组,
(Case When A.第一周 < T.第一周 Then 0 Else 15 End) As 第一周,
(Case When A.第二周 < T.第二周 Then 0 Else 15 End) As 第二周,
(Case When A.第三周 < T.第三周 Then 0 Else 15 End) As 第三周
From
A
Inner Join T
On A.组 = T.组
GO
--測試
Select * From V_TEST
GO
--刪除測試環境
Drop Table A, T
Drop View V_TEST
GO
--結果
/*
组 第一周 第二周 第三周
AAA 15 0 15
BBB 15 15 0
ccc 0 15 15
*/