Member 10744248 Ответов: 1

Порядок по элементам должен появиться в списке выбора, если указан параметр SELECT DISTINCT.


SELECT DISTINCT MG.IDNO   ,MG.LOANUMBER,MG.PERIOD  ,MG.YEAR1 ,
          MG.TX_DATE,MG.TY_DATE  ,MG.ACCRUED ,MG.SACCRUED,
          MG.OPENING,MG.PAYMENT  ,MG.INTEREST,MG.REPAY,MG.CLOSING,
          L.CUSTOMER,(MG.IDNO+''+MG.LOANUMBER) AS IDNOLOAN
  FROM MGBALANCE MG
  LEFT  JOIN LOANS L
  ON MG.IDNO=L.IDNO
  WHERE MG.IDNO= @ZIDNO AND
  CONVERT(NVARCHAR, MG.YEAR1) + Right('00' +  Convert(varchar(10), MG.PERIOD), 2)  BETWEEN @STAT AND @END
  ORDER BY   MG.IDNO,MG.LOANUMBER,CONVERT(NVARCHAR,MG.YEAR1) + Right('00' +  Convert(varchar(10),MG.PERIOD), 2),TX_DATE



Имейте приведенное выше сообщение об ошибке, когда я ввел синтаксис 'DISITNCT'.

Пожалуйста, исправьте проблему выше.

Спасибо

Что я уже пробовал:

Проверил мои предыдущие коды и интернер

1 Ответов

Рейтинг:
1

OriginalGriff

Ошибка довольно ясна, если вы подумаете об этом: вы не можете использовать SELECT DISTINCT, если все элементы в предложении ORDER BY не включены в SELECT.
А почему бы и нет? Ну а если нет,то какие предметы различны? Может быть несколько строк в порядке, по которому они различаются, но которые не различаются, если не присутствуют все упорядочивающие столбцы - так что же SQL должен выбрать для отбрасывания? Он не хочет принимать это решение - потому что он действительно ненавидит давать вам неправильную информацию - поэтому вместо этого он передает вам деньги обратно, чтобы изменить ваш запрос так, чтобы distinct означал distinct! :смеяться: