2014-02-21 4 views
0

Я использую sql server 2005. У меня есть следующее поле под названием referenceInfo. Если длина больше 11, то это идентификационный номер. Если длина меньше 12, то это утверждение.Значение SQL не в той же строке

Проблема в том, что он перепрыгнет во второй ряд. Как сделать это в одной строке?

http://postimg.org/image/8h4njmfsp/

CASE 
    WHEN LEN(CONVERT(varchar(12), GUEST_CHECK_LINE_ITEM_HIST.referenceInfo)) > 11 THEN (+'"') + RTRIM(CONVERT(varchar(12), GUEST_CHECK_LINE_ITEM_HIST.referenceInfo)) + '"' 
    ELSE '""' 
    END AS [Identity Number], 
    CASE 
    WHEN LEN(CONVERT(varchar(12), GUEST_CHECK_LINE_ITEM_HIST.referenceInfo)) < 12 THEN (+'"') + RTRIM(CONVERT(varchar(12), GUEST_CHECK_LINE_ITEM_HIST.referenceInfo)) + '"' 
    ELSE '""' 
    END AS [ApprovalCode] 

Благодаря

+1

пожалуйста размещаете выборочные значения для столбца referenceInfo в вопросе – Deepshikha

ответ

1

Я не уверен, но мне кажется, вы пытаетесь объединить две строки в одну. Так как вы не дали полный sql, попробуйте что-то вроде этого (угадайте, что ReceiptNo уникален). Он принимает либо t1 или t2 для обоих полей:

select all_other_fields 
,  max(case 
     when len(convert(varchar(12), t1.referenceinfo)) > 11 then (+'"') + rtrim(convert(varchar(12), t1.referenceinfo)) + '"' 
     when len(convert(varchar(12), t2.referenceinfo)) > 11 then (+'"') + rtrim(convert(varchar(12), t2.referenceinfo)) + '"' 
     else '""' 
     end) as [identity number] 
,  max(case 
     when len(convert(varchar(12), t1.referenceinfo)) < 12 then (+'"') + rtrim(convert(varchar(12), t1.referenceinfo)) + '"' 
     when len(convert(varchar(12), t2.referenceinfo)) < 12 then (+'"') + rtrim(convert(varchar(12), t2.referenceinfo)) + '"' 
     else '""' 
     end) as [approvalcode] 
from guest_check_line_item_hist t1 
join guest_check_line_item_hist t2 
on  t1.ReceiptNo = t2.ReceiptNo 
group 
by  all_other_fields 
+0

это значение таблицы referenceInfo http://postimg.org/image/cekv20rpf/ Я пытаюсь переместить 100000001113 в идентификатор номер 106166, в поле ApprovalCode в той же строке. – alexcctan

+0

@alexcctan: И сделал ли sql работу? –

+0

Я пытаюсь использовать предоставленный вами код, но результат будет таким, как этот http://postimg.org/image/uwbllfe6b/ – alexcctan

Смежные вопросы