Я получаю эту ошибку
Сообщение 8156, Уровень 16, Состояние 1, Строка 67
Столбец 'MANDT' был указан несколько раз для 'cte'. "
при попытке запустить приведенный ниже код, однако я не включаю столбец MANDT
в свой запрос. Обе таблицы, которые я вызываю, имеют столбец MANDT
, но у них также есть столбец STAT
, и у меня не было проблемы с другой таблицей, пытающейся выполнить то же соединение, единственное, что у таблицы не было MANDT
, только STAT
был таким же.
Я попытался включить оба столбца MANDT
с псевдонимом: JCDS_SOGR.MANDT as Client
и TJ30T.MANDT as Client2
по отдельности, и вместе, это не сработало. Получил то же сообщение об ошибке.
;WITH cte AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY STAT ORDER BY UDATE) AS Rn,
*,
LAG(UDATE) OVER (PARTITION BY STAT ORDER BY UDATE) AS PrevUDate,
COUNT(*) OVER (PARTITION BY STAT) AS [Count]
FROM
JCDS_SOGR
JOIN
TJ30T on JCDS_SOGR.STAT = TJ30T.ESTAT
WHERE
OBJNR = 'IE000000000010003137'
)
SELECT
MAX(rn) AS [Count],
OBJNR, STAT, TXT30,
SUM(CASE
WHEN rn % 2 = 0
THEN DATEDIFF(d, PrevUDate, UDATE)
WHEN rn = [Count]
THEN DATEDIFF(d, UDATE, GETDATE())
ELSE 0
END) AS DIF
FROM
cte
GROUP BY
OBJNR, STAT, TXT30
Это другой запрос, на который я ссылался, который отлично работает с тем же кодом.
;with cte
AS
(
select ROW_NUMBER() OVER(partition by STAT Order by UDATE ) as Rn
, *
, LAG(UDATE) OVER(partition by STAT Order by UDATE ) As PrevUDate
, COUNT(*) OVER(partition by STAT) As [Count]
from JCDS_SOGR
join TJ02T on JCDS_SOGR.STAT = TJ02T.ISTAT
where OBJNR = 'IE000000000010003137'
and TJ02T.SPRAS = 'E'
)
select Max(rn) As [Count]
, OBJNR,STAT,TXT30
, SUM(CASE WHEN rn%2=0 THEN DATEDIFF(d,PrevUDate,UDATE)
WHEN rn=[Count] THEN DATEDIFF(d,UDATE,getDate())
ELSE 0 END) as DIF
from cte
group BY OBJNR, STAT,TXT30
Ожидаемый результат:
[COUNT OBJNR STAT TXT30 DIF
1 IE000000000010003137 I0099 Available 2810][1]