2015-12-15 32 views
1

與case語句另一個查詢我有這樣串聯查詢與SQL

SELECT 
    ((SELECT 
    F_Cat_Code 
    FROM T_Category 
    WHERE F_Cat_name = 'Furniture') 
    + (SELECT 
    F_L1Cat_Code 
    FROM T_L1Category 
    WHERE F_L1Cat_Name = 'Table') 
    + (SELECT 
    F_L2Cat_Code 
    FROM T_L2Category 
    WHERE F_L2Cat_Name = 'Tea Table') 
) 

此查詢0541123在此我想輸出的查詢增加一個條件

select Max(F_Serial_No) 
from T_assets 
where F_Cat_Code='05' and F_L1Cat_Code = '41' and 
     F_L2Cat_Code ='123' 

如果這查詢結果爲空,那麼我想顯示的值054112300001

如果該查詢有一些值,例如00002那麼我想sh流遞增1後輸出,例如054112300003

回答

2

嘗試這樣的:

SELECT 
    ((SELECT 
    F_Cat_Code 
    FROM T_Category 
    WHERE F_Cat_name = 'Furniture') 
    + (SELECT 
    F_L1Cat_Code 
    FROM T_L1Category 
    WHERE F_L1Cat_Name = 'Table') 
    + (SELECT 
    F_L2Cat_Code 
    FROM T_L2Category 
    WHERE F_L2Cat_Name = 'Tea Table') 
) 
    + (select ISNULL(REPLACE(STR(Max(F_Serial_No)+1,5),' ',0),'00001') 
    from T_assets 
    where 
    F_Cat_Code='05' and F_L1Cat_Code = '41' and F_L2Cat_Code ='123' 
    ) 
+0

先生選擇最高(F_Serial_No) F_L1Cat_Code ='41'和 F_L2Cat_Code ='123'這個值不是空的,那麼我想增加這個 –

+0

這個查詢只能工作,那個值是空的 –

+0

@jasjas編輯我的回答。除了增量(「+1」),我添加了填充(也就是說,該值由前導零(34 => 00034)返回,以確保寬度爲5.希望這是您需要的...... – Shnugo

1

從T_assets 其中F_Cat_Code = '05' ,並嘗試該

SELECT 
     (cast((SELECT 
     F_Cat_Code 
     FROM T_Category 
     WHERE F_Cat_name = 'Furniture') as varchar(max)) 
     + cast((SELECT 
     F_L1Cat_Code 
     FROM T_L1Category 
     WHERE F_L1Cat_Name = 'Table') as varchar(max)) 
     + cast((SELECT 
     F_L2Cat_Code 
     FROM T_L2Category 
     WHERE F_L2Cat_Name = 'Tea Table') as varchar(max)) 
    )+cast((select coalesce(Max(F_Serial_No)+1,'00001') 
    from T_assets 
    where F_Cat_Code='05' and F_L1Cat_Code = '41' and 
      F_L2Cat_Code ='123') as varchar(max))