Псевдоним таблицы не распознан - PullRequest
0 голосов
/ 08 октября 2018

У меня есть код, который создает три таблицы с псевдонимами (WEYellow, WEGreen и WEPutaway), чтобы вернуть одну таблицу с каждой желтой, зеленой и датой путевки.Я получаю данные, необходимые для первых двух, без проблем.Третья таблица должна использовать псевдоним как первой, так и второй таблицы, но она не распознает второй псевдоним.Я предполагаю, что что-то упустил между соединениями, но я не знаю что.

SELECT 
   WEYellow.[Item No_], 
   WEYellow.[Registering Date] as [Yellow Date],
   WEYellow.[User ID] as [Yellow User],

   --GREEN DATE
   ISNULL(
    (SELECT  MIN([Registering Date]) as [GrnDate]
    FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEGreen
    WHERE WEGreen.[Item No_] = WEYellow.[Item No_] 
      AND WEGreen.[Registering Date] > WEYellow.[Registering Date] 
      AND WEGreen.[Location Code] = WEYellow.[Location Code]
      AND WEGreen.[Bin Code] = 'GREEN'
      AND [Qty_ (Base)] > 0), 
    '1900-01-01') as [Green Date],

     --PUTAWAY BIN Date
        ISNULL((SELECT MIN([Registering Date]) as [PutDate]
     FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEPutaway
      WHERE WEPutaway.[Item No_] = WEYellow.[Item No_] 
          AND WEPutaway.[Registering Date] > WEYellow.[Registering Date] 
          AND WEPutaway.[Registering Date] > WEGreen.[Registering Date] -- THIS IS THE PROBLEM
          AND WEPutaway.[Location Code] = WEYellow.[Location Code]
         --Next Bin that's not Green, Yellow, or User
         AND WEPutaway.[Bin Code] <> 'GREEN' 
          AND WEPutaway.[Bin Code] <> 'YELLOW' 
         And NOT EXISTS (Select 1 from [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Mobile User Setup] as MU
                                       where MU.[Short User ID] = WEPutaway.[Bin Code])
          AND [Qty_ (Base)] > 0), 
    '') as [Putaway Bin Date]


     FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEYellow
      WHERE WEYellow.[Location Code] = '01' 
            AND WEYellow.[Bin Code] = 'YELLOW'
            AND [Qty_ (Base)] > 0

1 Ответ

0 голосов
/ 09 октября 2018

Нельзя ссылаться на один подзапрос из другого подзапроса в том же основном запросе.

Что вы можете сделать, это создать общее табличное выражение с основным запросом и первым подзапросом, а затем выбрать из него,добавление второго подзапроса:

;WITH CTE AS
(
SELECT 
   WEYellow.[Item No_], 
   WEYellow.[Registering Date] as [Yellow Date],
   WEYellow.[User ID] as [Yellow User],

   --GREEN DATE
   ISNULL(
    (SELECT  MIN([Registering Date]) as [GrnDate]
    FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEGreen
    WHERE WEGreen.[Item No_] = WEYellow.[Item No_] 
      AND WEGreen.[Registering Date] > WEYellow.[Registering Date] 
      AND WEGreen.[Location Code] = WEYellow.[Location Code]
      AND WEGreen.[Bin Code] = 'GREEN'
      AND [Qty_ (Base)] > 0), 
    '1900-01-01') as [Green Date],

     --PUTAWAY BIN Date
        ISNULL((SELECT MIN([Registering Date]) as [PutDate]
     FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEPutaway
      WHERE WEPutaway.[Item No_] = WEYellow.[Item No_] 
          AND WEPutaway.[Registering Date] > WEYellow.[Registering Date] 
          AND WEPutaway.[Registering Date] > WEGreen.[Registering Date] -- THIS IS THE PROBLEM
          AND WEPutaway.[Location Code] = WEYellow.[Location Code]
         --Next Bin that's not Green, Yellow, or User
         AND WEPutaway.[Bin Code] <> 'GREEN' 
          AND WEPutaway.[Bin Code] <> 'YELLOW' 
         And NOT EXISTS (Select 1 from [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Mobile User Setup] as MU
                                       where MU.[Short User ID] = WEPutaway.[Bin Code])
          AND [Qty_ (Base)] > 0), 
    '') as [Putaway Bin Date]


     FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEYellow
      WHERE WEYellow.[Location Code] = '01' 
            AND WEYellow.[Bin Code] = 'YELLOW'
            AND [Qty_ (Base)] > 0
)

SELECT *,
     --PUTAWAY BIN Date
     ISNULL((SELECT MIN([Registering Date]) as [PutDate]
     FROM [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Warehouse Entry] as WEPutaway
     WHERE WEPutaway.[Item No_] = WEYellow.[Item No_] 
     AND WEPutaway.[Registering Date] > WEYellow.[Registering Date] 
     AND WEPutaway.[Registering Date] > WEGreen.[Registering Date] -- THIS IS THE PROBLEM
     AND WEPutaway.[Location Code] = WEYellow.[Location Code]
     --Next Bin that's not Green, Yellow, or User
     AND WEPutaway.[Bin Code] <> 'GREEN' 
     AND WEPutaway.[Bin Code] <> 'YELLOW' 
     And NOT EXISTS (
         Select 1 
         from [Coverpools 2013 Live].[dbo].[Cover-Pools, Inc_$Mobile User Setup] as MU
         where MU.[Short User ID] = WEPutaway.[Bin Code]
     )
     AND [Qty_ (Base)] > 0), 
    '') as [Putaway Bin Date]
FROM CTE
...