2017-08-03 77 views
0

我有以下代碼。在某些情況下,不會有t1.LineNo = 2,所以我希望Val2僅爲空或空白。但我不能讓它工作空行如果不存在

select 
    MOTRAN_HAJobFile.JobNumber 
    ,MOTRAN_HAExtraChg.Description,MOTRAN_HAExtraChg.Value 

    ,***(select t1.Value from MOTRAN_HAExtraChg t1 
where MOTRAN_HAExtraChg.JobUniqueKey = t1.JobUniqueKey 
and t1.LineNo = 2) as Val2*** 

from 
    MOTRAN_HAJobFile 
    left outer join 
    MOTRAN_HAExtraChg 
    on MOTRAN_HAExtraChg.JobUniqueKey = MOTRAN_HAJobFile.UniqueKey 
where 
    MOTRAN_HAJobFile.JobNumber = '235416' 

EDITED

Job    line  Description      Value 
235416    1   Sunday Collection    325 
235416    2   Rush Charge      82  

這是表,但我的代碼,使得它像這樣

Job  Description    Value  Description2  Value 2 
235416 Sunday Collection   325  Rush Charge  82 

行2不會永遠存在,這是我的問題我只是想讓它留下描述2和值2空白

+0

如果您正在使用SQL Server嘗試使用ISNULL()如果你正在使用MySQL然後使用IFNULL() – Disturb

+1

你是什麼意思它不起作用?如果Val2不是「空白或空白」,你會得到什麼? –

+0

如果t1.LineNo = 2不存在,Val2將已經爲空。這意味着問題可能是其他問題,例如您的關係/連接。但我會建議張貼一些樣本數據和預期結果,以便我們可以看到你想要什麼 – Matt

回答

0

樣本表和數據

CREATE TABLE jobfile 
(job VARCHAR(6), 
line INT, 
description VARCHAR(50), 
value INT 
) 

INSERT INTO jobfile 
VALUES ('235416',1,'Sunday Collection',325); 

INSERT INTO jobfile 
VALUES ('235416',2,'Rush Charge',82); 

INSERT INTO jobfile 
VALUES ('100001',1,'Sunday Collection',900); 

job  line description   value 
235416 1  Sunday Collection 325 
235416 2  Rush Charge   82 
100001 1  Sunday Collection 900 

查詢

SELECT DISTINCT jf.job, 
     (SELECT description FROM jobfile WHERE job = jf.job AND line = 1) AS description, 
     (SELECT value FROM jobfile WHERE job = jf.job AND line = 1) AS value, 
     (SELECT description FROM jobfile WHERE job = jf.job AND line = 2) AS description2, 
     (SELECT value FROM jobfile WHERE job = jf.job AND line = 2) AS value2 
    FROM jobfile jf 

樣品結果

job  description   value  description2 value2 
100001 Sunday Collection 900   NULL   NULL 
235416 Sunday Collection 325   Rush Charge  82 
+0

你是一個傳奇,謝謝你 – TCmc