pranathis012 Ответов: 3

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


Привет,
Это прекрасно работает
SELECT DISTINCT SED.MCSED_SED_Short_Description, SCH.Doc_SNo,
 FROM @Schedule_Status SCH  , DMS_M_Company_Schedule_Element_Details SED
 WHERE SED.MCSED_SED_Code =123
 ORDER BY   SED.MCSED_SED_Short_Description, SCH.Doc_SNo, SCH.Doc_No


Но когда я ввожу выражение case в предложении order by оно показывает ошибку
SELECT DISTINCT SED.MCSED_SED_Short_Description, SCH.Doc_SNo,
 FROM @Schedule_Status SCH  , DMS_M_Company_Schedule_Element_Details SED
 WHERE SED.MCSED_SED_Code =123
 ORDER BY   CASE SED.MCSED_SED_Short_Description WHEN 'VD' THEN 1 ELSE 2 END,
                   SCH.Doc_SNo, SCH.Doc_No


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

3 Ответов

Рейтинг:
23

Kuthuparakkal

Удалить DISTINCT и добавить предложение GROUP BY


[no name]

sry этот SP используется в каком-то другом проекте, если я изменяю его таким образом, это влияет на существующий проект. причина, по которой я ввожу это различие, заключается в удалении повторяющихся значений.

Рейтинг:
13

Rajesh Kariyavula

Чтобы устранить эту проблему просто добавьте поле Ш.Doc_No в предложение Select.

Чтобы узнать больше об этой проблеме, прочтите приведенную ниже статью :

SQL Distinct & Order by Issue[^]

Надеюсь, это поможет.


[no name]

K я попробую использовать предложение Group. Но мой маленький субт заключается в том , что поля называются в select query, что total columns должен использоваться в Group caluse ... это правильно.
например, в моем запросе select я вызвал 20 столбцов теперь в моем предложении group также я хочу вызвать всего 20 столбцов. пожалуйста, помогите мне в этом..

Rajesh Kariyavula

Да, для группировки вы должны выбрать поля, все поля, упомянутые в предложении Group By, также должны быть там в предложении select

[no name]

к Хорошо спасибо тебе

[no name]

это очень помогает мне

Rajesh Kariyavula

Рад слышать, что это помогло тебе.

Рейтинг:
0

Member 10229842

SELECT DISTINCT SED.MCSED_SED_Short_Description, SCH.Doc_SNo,
     ord = CASE SED.MCSED_SED_Short_Description WHEN 'VD' THEN 1 ELSE 2 END,
     SCH.Doc_No

 FROM @Schedule_Status SCH  , DMS_M_Company_Schedule_Element_Details SED
 WHERE SED.MCSED_SED_Code =123
 ORDER BY   CASE SED.MCSED_SED_Short_Description WHEN 'VD' THEN 1 ELSE 2 END,
                   SCH.Doc_SNo, SCH.Doc_No