Удаление символов Char 10, Char 13 из псевдонимов столбцов в сочетании с использованием case case SQL Server 2014 - PullRequest
0 голосов
/ 07 сентября 2018

Я бы хотел, чтобы запрос ниже (второе поле) убрал символы 10 и 13 символов. Я попытался использовать синтаксис для двух полей с псевдонимами, как показано ниже. Я получаю сообщение об ошибке, в котором intellisense пытается разделить его на разные запросы. Я могу использовать синтаксис для одного столбца с псевдонимами, но не для двух. Как я могу сделать это лучше?

Comments = REPLACE(REPLACE([Comments], CHAR(13), ''), CHAR(10), '') AS 'SAP REMARKS'

NOTES   = REPLACE(REPLACE([Notes], CHAR(13), ''), CHAR(10), '') AS 'WMS NOTES'

У меня есть следующий запрос, и он выполняется нормально. Я изменю дату с жестко заданного значения, как только получу данные для извлечения.

SELECT  
    [DocEntry],
    CASE 
       WHEN DOCSTATUS = 'O' THEN 'OPEN'
       WHEN DOCSTATUS = 'C' THEN 'CLOSED/CANCELLED'
      ELSE NULL 
    END AS 'SAP STATUS',
    [STATUS] AS 'WMS STATUS',
    confirmed,
    [CardCode], [CardName],
    Comments AS 'SAP REMARKS',
    NOTES AS 'WMS NOTES',
    [DocDate], [DocDueDate] 
FROM
    [DBASE1].[ENV].[dbo].[ORDR]B
LEFT JOIN 
    [DBASE2].[ENV].[dbo].[OUTBOUNDORHEADER] A ON orderid = DocEntry
WHERE 
    DOCDATE = '2018-09-06'    


SELECT  
    [DocEntry],
    CASE
       WHEN DOCSTATUS = 'O' THEN 'OPEN'
       WHEN DOCSTATUS = 'C' THEN 'CLOSED/CANCELLED'
       ELSE NULL 
    END AS 'SAP STATUS',
    [STATUS] AS 'WMS STATUS',
    confirmed,
    [CardCode], [CardName],
    Comments = REPLACE(REPLACE([Comments], CHAR(13), ''), CHAR(10), '') AS 'SAP REMARKS',
    NOTES = REPLACE(REPLACE([Notes], CHAR(13), ''), CHAR(10), '') AS 'WMS NOTES',
    [DocDate]
FROM 
    [DBASE1].[ENV].[dbo].[ORDR]B
LEFT JOIN 
    [DBASE2].[ENV].[dbo].[OUTBOUNDORHEADER] A ON orderid = DocEntry
WHERE 
    DOCDATE = '2018-09-06'

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

Запустите следующее (без части comments = вашего исходного синтаксиса):

SELECT  [DocEntry]
,CASE
WHEN DOCSTATUS = 'O' 
THEN 'OPEN'
WHEN DOCSTATUS = 'C'
THEN 'CLOSED/CANCELLED'
ELSE NULL END AS 'SAP STATUS'
,[STATUS] AS 'WMS STATUS' 
,confirmed
,[CardCode]
,[CardName]
,replace(replace([Comments],Char(13),''),CHAR(10),'') AS 'SAP REMARKS'
,replace(replace([Notes],Char(13),''),CHAR(10),'') AS 'WMS NOTES'
,[DocDate]
 FROM [DBASE1].[ENV].[dbo].[ORDR]B
 left join [DBASE2].[ENV].[dbo].[OUTBOUNDORHEADER]A
on orderid = DocEntry
where DOCDATE = '2018-09-06'

Обычно вам нужно будет использовать что-то вроде comments =, только если вы пытаетесь обновить исходную таблицу, установить значение объявленной переменной или подобное.

0 голосов
/ 07 сентября 2018

Спасибо за дополнительный запрос. Только то, что я думал. Вы используете псевдоним дважды, один раз с помощью xxx = ..., а затем снова с помощью AS. Вот, пожалуйста:

SELECT
  [DocEntry]
 ,CASE
    WHEN DOCSTATUS = 'O' THEN 'OPEN'
    WHEN DOCSTATUS = 'C' THEN 'CLOSED/CANCELLED'
    ELSE NULL
  END AS [SAP STATUS]
 ,[STATUS] AS [WMS STATUS]
 ,confirmed
 ,[CardCode]
 ,[CardName]
 ,REPLACE(REPLACE([Comments], CHAR(13), ''), CHAR(10), '') AS [SAP REMARKS]
 ,REPLACE(REPLACE(CAST([Notes] AS NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), '') AS [WMS NOTES]
 ,[DocDate]
 ,[DocDueDate]
FROM
  [DBASE1].[ENV].[dbo].[ORDR] AS B
  LEFT JOIN
    [DBASE2].[ENV].[dbo].[OUTBOUNDORHEADER] AS A
      ON
      orderid = DocEntry
WHERE
  DOCDATE = '2018-09-06';

Редактировать : Добавлен явный CAST в столбец Notes, для комментариев.

0 голосов
/ 07 сентября 2018

Следующее должно работать нормально:

SELECT  [DocEntry]
,CASE DOCSTATUS WHEN 'O' THEN 'OPEN' WHEN 'C' THEN 'CLOSED/CANCELLED' ELSE NULL END AS 'SAP STATUS'
,[STATUS] AS 'WMS STATUS' 
,confirmed
,[CardCode]
,[CardName]
,replace(replace([Comments],Char(13),''),CHAR(10),'') AS 'SAP REMARKS'
,replace(replace([Notes],Char(13),''),CHAR(10),'') AS 'WMS NOTES'
,[DocDate]
,[DocDueDate] 
FROM [DBASE1].[ENV].[dbo].[ORDR]B
left join [DBASE2].[ENV].[dbo].[OUTBOUNDORHEADER]A
on orderid = DocEntry
where DOCDATE = '2018-09-06'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...