поле не отображается в разделе отчета - PullRequest
0 голосов
/ 26 марта 2012

Мои вопросы постепенно становятся все более и более сложными, так что вы четко учите меня!В этом у меня есть отчет, который печатает подробности о подтверждении карты.Все поля заполняются нормально, кроме случаев, когда я изменил запрос на подтверждение на «запрос на возврат» - поле, которое в этом случае не отображается в CTYlong, которое просто остается пустым для всех экземпляров «запросов на возврат».Это для сср я оставлю это вам!

IF @MsgType = 200 
BEGIN 
SELECT DISTINCT MsgType = 'confirm Request' , resp.dtTimeRPO as     HostTime , 
                                                          resp.sSTANExternalI as STAN , 
 resp.sterminal_TerminalID as TerminalID ,      resp.ssell_CardAcceptorIDCode as    

 sellID , resp.ssell_CardAcceptorNameLoc as   sellName ,   

 STUFF(resp.span_Pan,7,(LEN(resp.span_Pan)-10), REPLICATE('X',(LEN(resp.span_Pan)-10)))   
 as PAN , CAST(MONTH(resp.dtpan_ExpiryDate) as varchar(2)) + '/' +   
 CAST(YEAR(resp.dtpan_ExpiryDate) as char(4)) as ExpDate , CAST(resp.namounts_cAmount   
 as float)/100 as Amount , resp.namounts_CurrencyCodetx as CurrencyCode , 
 resp.nActionCode as RC , rc.rcInfo as RCDesc , resp.sconfirmCode as confirmCode , 
   ssell_CountryShort2 AS sell_Country , ctylong , 

    (SELECT DATEPART(ss, resp.dtTimeRPO - req.dtTimeRQI) FROM dbo.txHistory as    
   req (NOLOCK) 

 WHERE req.sSTANExternalI = resp.sSTANExternalI 
 AND 
 req.namounts_cAmount = resp.namounts_cAmount 
 AND req.dtLocalDateTime = resp.dtLocalDateTime 
 AND RTRIM(req.sPHProfile) = @Head 
AND (req.sconfirmCode = '' 
 AND req.nActionCode = 0) 
AND req.dtTimeRQI BETWEEN DATEADD(mi, -1, @StartDate) 
 AND @EndDate ) as Duration 
 FROM dbo.txHistory as resp (NOLOCK) 
 INNER JOIN dbo.replyCode as rc (NOLOCK) 
 ON resp.nActionCode = rc.rcCode 
 inner join country (nolock) 
 on nsell_countrycode = ctycode 
WHERE resp.dtTimeRPO 
BETWEEN @StartDate AND @EndDate 
AND
 resp.eMTI = @MsgType
AND 
RTRIM(resp.sPHProfile) = @Head
AND NOT (resp.sconfirmCode = '' AND resp.nActionCode = 0) 
ORDER BY resp.dtTimeRPO 
END
ELSE 
BEGIN 
 SELECT DISTINCT MsgType = 'turnaround Request' , resp.dtTimeRPO as HostTime ,   
 resp.sSTANExternalI as STAN , resp.sterminal_TerminalID as TerminalID ,   
  resp.ssell_CardAcceptorIDCode as sellID , resp.ssell_CardAcceptorNameLoc   
  as sellName , STUFF(resp.span_Pan,7,(LEN(resp.span_Pan)-10), REPLICATE('X',
  (LEN(resp.span_Pan)-10))) as PAN , CAST(MONTH(resp.dtpan_ExpiryDate) as varchar(2)) +   
 '/' + CAST(YEAR(resp.dtpan_ExpiryDate) as char(4)) as ExpDate ,   
 CAST(resp.namounts_cAmount as float)/100 as Amount ,   
  resp.namounts_CurrencyCodetx as CurrencyCode , resp.nActionCode as RC , 
  rc.rcInfo as RCDesc , resp.sconfirmCode as confirmCode , 

  (SELECT DATEPART(ss, resp.dtTimeRPO - req.dtTimeRQI) 
 FROM dbo.txHistory as req (NOLOCK)
 WHERE req.sSTANExternalI = resp.sSTANExternalI AND req.namounts_cAmount =     
  resp.namounts_cAmount AND req.dtLocalDateTime = resp.dtLocalDateTime
 AND
  RTRIM(req.sPHProfile) = @Head
  AND 
  (req.eMTI = 420 AND req.nActionCode = 400)
 AND 
 req.dtTimeRQI BETWEEN DATEADD(mi, -1, @StartDate) AND @EndDate ) 
as Duration 
FROM dbo.txHistory as resp (NOLOCK) 
INNER JOIN dbo.replyCode as rc (NOLOCK) ON resp.nActionCode = rc.rcCode WHERE    
 resp.dtTimeRPO 
BETWEEN 
@StartDate 
 AND @EndDate AND resp.eMTI = @MsgType 
 AND RTRIM(resp.sPHProfile) = @Head 
 ORDER BY resp.dtTimeRPO END

1 Ответ

3 голосов
/ 26 марта 2012

Для запросов отмены вы не включаете поле ctylong. По сути, ваши столбцы не совпадают в двух ваших запросах. Вы действительно должны лучше форматировать свои запросы, это был кошмар для чтения.

edit: так мне нравится форматировать мои запросы

SELECT
   column1,
   column2,
   column3
FROM
   table_1 INNER JOIN
   table_2 ON table_1.id = table_2.id INNER JOIN
   (
      SELECT
         column_4
      FROM
         table_3
   ) t3 ON table_2.id = t3.id
WHERE
   table_1.id = 1000 AND
   table_2.id = 2000 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...