技術(shù) 點
- 技術(shù)
- 點
- V幣
- 點
- 積分
- 71645
|
2#
樓主 |
發(fā)表于 2011-10-19 12:56:35
|
只看該作者
通過自定義函數(shù)改進:- CREATE FUNCTION dbo.f裝備月份能耗數(shù)據(jù)完成(@DeviceID int, @YEAR int, @MONTH int)
- RETURNS NVARCHAR(3) AS
- BEGIN
- DECLARE @RET NVARCHAR(3)
- DECLARE @R bit
- SELECT TOP 1 @R=已完成
- FROM (
- SELECT 已完成 FROM dbo.t能耗辦公樓 WHERE (裝備序號=@DeviceID AND 年度 = @YEAR AND 月份=@MONTH) UNION
- SELECT 已完成 FROM dbo.t能耗囤船 WHERE (裝備序號=@DeviceID AND 年度 = @YEAR AND 月份=@MONTH) UNION
- SELECT 已完成 FROM dbo.t能耗海巡艇 WHERE (裝備序號=@DeviceID AND 年度 = @YEAR AND 月份=@MONTH) UNION
- SELECT 已完成 FROM dbo.t能耗車輛 WHERE (裝備序號=@DeviceID AND 年度 = @YEAR AND 月份=@MONTH)
- ) AS E
-
- SET @RET= CASE WHEN @R=1 THEN N'已完成' WHEN @R=0 THEN N'未完成' ELSE N'未填報' END
- RETURN @RET
- END
- GO
- CREATE FUNCTION dbo.f裝備年度各月能耗數(shù)據(jù)完成(@YEAR int, @DeptID varchar(20), @DeviceType int)
- RETURNS TABLE AS
- RETURN
- (
- SELECT D.裝備序號, D.裝備類型編號, P.部門, P.部門標識, L.名稱, T.裝備類型, @YEAR AS 年度,
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 1) AS [1],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 2) AS [2],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 3) AS [3],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 4) AS [4],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 5) AS [5],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 6) AS [6],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 7) AS [7],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 8) AS [8],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 9) AS [9],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 10) AS [10],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 11) AS [11],
- dbo.f裝備月份能耗數(shù)據(jù)完成(D.裝備序號, @YEAR, 12) AS [12]
- FROM dbo.t裝備 AS D INNER JOIN
- dbo.v裝備列表 AS L ON D.裝備序號 = L.裝備序號 INNER JOIN
- dbo.t部門 AS P ON L.一級部門標識 = P.部門標識 INNER JOIN
- dbo.t裝備類型 AS T ON D.裝備類型編號 = T.裝備類型編號
- WHERE (D.裝備類型編號=@DeviceType OR (@DeviceType=0 AND D.裝備類型編號 IN (1, 2, 3, 4)))
- AND (一級部門標識=@DeptID OR @DeptID='' OR UPPER(@DeptID)='ALL')
- AND (D.審核 = 1) AND (D.報廢 <> 1) AND (D.閑置 <> 1)
- )
- GO
復制代碼 |
|