2014-12-02 58 views
0

我需要遍歷所有行和做到以下幾點:如何分配基於列單元格的變量不同值的值

If the Date_Deleted is null then SET @Form = '01' else @Form = '02' 

目前只恢復表= 01。

謝謝!

SELECT @CHECKDATE = [DATE_DELETED] 
FROM Executive__Vehicles 
WHERE (STATE = 'NC') 

IF (@CHECKDATE is null) 
    BEGIN 
     SET @FORM = '01'   
    END 
ELSE 
    BEGIN 
     SET @FORM = '02' 
    END 
+0

您的查詢似乎返回多個值,如果情況如此,那麼將根據查詢結果中的最後一行設置「@ Checkdate」。 – Glk 2014-12-02 01:30:34

+0

您正在使用哪種RDBMS? – Bohemian 2014-12-02 02:04:22

+0

@ Glk.net謝謝我想知道是否是設置價值的第一行或最後一行。 – Lily 2014-12-02 16:50:33

回答

0

您需要將Executive_vehicles中的所有結果加載到臨時表中,然後逐個循環遍歷它們以完成設置。

CREATE TABLE #tempTable1(iID int identity(1,1),date_deleted datetime) 
INSERT INTO #tempTable1 
select [DATE_DELETED] 
FROM Executive__Vehicles WHERE (STATE = 'NC') 

DECLARE @countROws int 
DECLARE @CHECKDATE datetime 
DECLARE @topRow INT 
SET @countRows =(SELECT COUNT(*) FROM #tempTable1) 
WHILE @countRows>0 
BEGIN 
SET @topRow = (SELECT TOP 1 iID from #tempTable1) 
SET @CHECKDATE = (SELECT TOP 1 date_deleted from #tempTable1) 
IF (@CHECKDATE is null) 
BEGIN SET @FORM = '01' 
END 

ELSE 
BEGIN 
SET @FORM = '02' 
END 

DELETE FROM #tempTable1 where [email protected] 
set @countRows = (SELECT count(*) FROM #tempTable1) 
set @CHECKDATE = NULL 
END 

editted添加標識列date_deleted可能是同爲多行和刪除將其全部刪除。

+0

你讓我的一天!我無法開始說謝謝!!!!!!很難理解我在互聯網上找到的東西,因爲它們在行> 0開始計數時使用,然後沒有使我感到困惑。現在我看到你從第一排開始就很有意義。再次感謝你謝謝你,謝謝! – Lily 2014-12-02 16:34:00

+0

沒問題。樂於幫助! – Jt2ouan 2014-12-02 23:30:48