упорядочить по пункту с использованием материала - PullRequest
0 голосов
/ 28 января 2019

У меня есть два вида.

Определение моего первого вида

CREATE VIEW FIRST_VIEW AS 
SELECT   PT.F_PRODUCT AS F_PRODUCT, PT.F_TEXT_CODE AS F_TEXT_CODE, PHT.F_PHRASE AS F_PHRASE,F_COUNTER COUNTER1 FROM T_PROD_TEXT PT
LEFT JOIN T_PHRASE_LINKAGE PHL
    ON PT.F_TEXT_CODE = PHL.F_TEXT_CODE
INNER JOIN T_PHRASE_TRANSLATIONS PHT
    ON PHL.F_PHRASE_ID = PHT.F_PHRASE_ID
WHERE PT.F_DATA_CODE = 'MANU' AND PHT.F_LANGUAGE = 'EN'
UNION ALL
SELECT PT.F_ALIAS AS F_PRODUCT, PT.F_TEXT_CODE AS F_TEXT_CODE, PHT.F_PHRASE AS F_PHRASE,F_COUNTER COUNTER2 FROM T_PROD_ALIAS_TEXT PT
LEFT JOIN T_PHRASE_LINKAGE PHL
    ON PT.F_TEXT_CODE = PHL.F_TEXT_CODE
INNER JOIN T_PHRASE_TRANSLATIONS PHT
    ON PHL.F_PHRASE_ID = PHT.F_PHRASE_ID
WHERE PT.F_DATA_CODE = 'MANU' AND PHT.F_LANGUAGE = 'EN'

Вид сверху Дает ниже вывода.

F_PRODUCT        F_TEXT_CODE    F_PHRASE    COUNTER1

WVTST]PROD00|5     MANU0001     A           7734163
WVTST]PROD00|5     MANU0002     B           7734162
 ABPROD-BLACK      MANU0001     C           7714721

создал еще один вид Вид сверху (FIRST_VIEW) с использованием функции stuff.

CREATE VIEW [dbo].[V1_STUFFED] AS
SELECT V1.F_PRODUCT,
    F_TEXT_CODES = STUFF((SELECT DISTINCT ',' + V2.F_TEXT_CODE FROM FIRST_VIEW V2 WHERE V1.F_PRODUCT = V2.F_PRODUCT FOR XML PATH('')),1,1,''),
    F_PHRASES = STUFF((SELECT DISTINCT ' |par ' + V3.F_PHRASE FROM  FIRST_VIEW V3 WHERE V1.F_PRODUCT = V3.F_PRODUCT  FOR XML PATH('')),1,5,'') 
FROM FIRST_VIEW V1 GROUP BY V1.F_PRODUCT

Приведенный выше вид дает ниже Output.It объединяет F_TEXT_CODES AND F_PHRASES в одну строку для продуктов, которые содержат более одного кода_f_text_codes.

F_PRODUCT       F_TEXT_CODES        F_PHRASES
WVTST]PROD00|5  MANU0001,MANU0002    A,B
ABPROD-BLACK    MANU0001             C         

Ноi Требуемый ниже вывод.

F_PRODUCT       F_TEXT_CODES        F_PHRASES
WVTST]PROD00|5  MANU0002,MANU0001   B,A
ABPROD-BLACK     MANU0001           C

В вышеприведенном Требуемом выводе F_TEXT_CODES (MANU0002) отображается перед (MANU0001) Text_Code, потому что MANU002 содержит значение Counter1 (7734162) и MANU0001 СЧЕТЧИК СОДЕРЖАНИЯ (7734163), поэтому F_TEXTCCF_PHRASE отображает для основанного на F_PRODUCT порядка Counter1.

как я могу использовать порядок по выражению, используя функцию stuff для вышеуказанного требования?.

...