Создать выходной столбец на основе предложения where - PullRequest
1 голос
/ 15 апреля 2019

У меня есть скрипт:

SELECT DMC
      ,a.[id] 
      ,a.[PSN]
      ,a.[Status]
      ,a.[CreationDate]
      ,a.[DBInsertDatetime]
      ,c.Wuchtvers_anz
      ,c.[MD1_ANLIEF_MG]
      ,c.[MD2_ANLIEF_G]


FROM 
[tblTcInfo] a 
inner join [dbo].[tblC] b on a.PSN=b.PSN  
inner join [Daten] c on DMC=LGNR
   where a.PSN in (select a.PSN from [tblTcInfo] a inner join [dbo].[tblC] b on a.PSN=b.PSN  
   where DMC in
     (  

     '75044500718481203100--1802290018'

    )

, который дает мне вывод:

DMC id  PSN Status  CreationDate    DBInsertDatetime    Wuchtvers_anz   MD1_ANLIEF_MG   MD2_ANLIEF_G
00003064418481504503--1735304527    5861374 7500421056230120180527148491    1   2018-01-23 05:34:19.000 2018-01-23 05:34:19.680 2   7,72        169       
00003064418481504503--1735304527    5861374 7500421056230120180527148491    1   2018-01-23 05:34:19.000 2018-01-23 05:34:19.680 2   7,72        169       

Я ожидал вывод:

DMC id  PSN Status  CreationDate    DBInsertDatetime    Wuchtvers_anz   MD1_ANLIEF_MG   MD2_ANLIEF_G    Input_column
00003064418481504503--1735304527    5861374 7500421056230120180527148491    1   2018-01-23 05:34:19.000 2018-01-23 05:34:19.680 2   7,72        169         75044500718481203100--1802290018
00003064418481504503--1735304527    5861374 7500421056230120180527148491    1   2018-01-23 05:34:19.000 2018-01-23 05:34:19.680 2   7,72        169         75044500718481203100--1802290018

Невозможно использовать решение, подобное:

'75044500718481203100--1802290018' as Input_column

, потому что у меня будет много строк для ввода в предложении where.Я пытался использовать несколько set в сочетании с declare, но это все еще не работает.И еще один вариант, который я нашел, используя declare с insert, но здесь я должен объявить каждую переменную.Эта таблица [tblTcInfo] хитрая !!!!!!!!!!- Я могу фильтровать DMC по экс.2 и получите 3.Не спрашивай меня почему!так оно и есть.Я очень ценю вашу помощь.

1 Ответ

0 голосов
/ 15 апреля 2019

Вам необходимо перефразировать логику, используя JOIN, чтобы нужные столбцы были доступны для внешнего запроса.

В вашем случае это сложнее, потому что:

  • Псевдонимы таблиц не являются аббревиатурами для имен таблиц, поэтому выполнить запрос трудно.
  • Вы не квалифицируете все имена столбцов.

После реструктуризациизапрос, столбец доступен:

select i.DMC, i.[id], i.[PSN], i.[Status], i.CreationDate, i.[DBInsertDatetime],
       d.Wuchtvers_anz, d.MD1_ANLIEF_MG, d.MD2_ANLIEF_G,
       cc.DMC as input_DMC
from tblTcInfo i join
     [dbo].[tblC] c
     on i.PSN = c.PSN join
     Daten d
     on i.DMC = d.LGNR join -- I am guessing where these comes from
     (select distinct ?.DMC, ci.PSN
      from tblTcInfo ci join
           dbo.tblC c2
           on ci.PSN = c2.PSN 
       where ?.DMC in ('75044500718481203100--1802290018')

    ) cc
    on a.PSN = cc.PSN;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...