Member 12770648 Ответов: 1

"Отмена сведения" вызов - где назначить поля


ALTER PROCEDURE [dbo].[grpt_Inc_tat]
 (
   @CINCIDENT VARCHAR(50),
   @CDDL1     VARCHAR(50),
   @CDDL2     VARCHAR(50),
   @CDCOMPT   VARCHAR(50),
   @CFROM     DATETIME   ,
   @CTO       DATETIME 
)
AS
  BEGIN
      --  DECLARE @sql nvarchar(4000)
       
        DECLARE @sql NVARCHAR(MAX) = N''

       
      SET @sql = 'SELECT A.BRN_NAME ,A.PROD_SERV , A.COMP_TYPE,
  P.PROD_SERV_TAT, 
  COUNT(*) AS OVER_CNT,
                  SUM(CASE WHEN DATEADD(DD,P.PROD_SERV_TAT, A.COMP_DATE) < COALESCE(A.DATE_COMP_CLOS_FRMT)THEN 1 ELSE 0 END) AS [ACCEPT_TAT],
  				  SUM(CASE WHEN DATEADD(DD,P.PROD_SERV_TAT, A.COMP_DATE) > COALESCE(A.DATE_COMP_CLOS_FRMT)THEN 1 ELSE 0 END) AS [BEYOND_TAT],
  				  SUM(CASE WHEN DATEADD(DD,P.PROD_SERV_TAT, A.COMP_DATE) = COALESCE(A.DATE_COMP_CLOS_FRMT)THEN 1 ELSE 0 END) AS [EXACT_TAT],
  				  (SELECT COUNT(*) FROM RESPONSE BB   WHERE A.BRN_NAME=BB.BRN_NAME) AS GRP_CNT    --,[OPINIONS],OPINION_CNT
  				   FROM RESPONSE A
  
  LEFT JOIN BRANCH C ON A.BRN_NAME = C.BRN_NAME
  LEFT JOIN PROD_SERV P ON A.PROD_SERV = P.PROD_SERV_NAME
  LEFT JOIN PAYMAST B ON A.LNAME = B.LNAME
  AND A.FNAME = B.FNAME
  AND A.EMPNO = B.EMPNO '
 
   SET @sql = @sql + '  WHERE (A.COMP_DATE BETWEEN @CFROM AND @CTO) '
  
  	      IF @CINCIDENT <>'ALL' 	
             BEGIN			
               IF @CINCIDENT = 'OPENED' 	
                   SET @sql = @sql + ' AND A.COMP_DATE+P.PROD_SERV_TAT >= GETDATE()'   				
               ELSE IF @CINCIDENT = 'CLOSED' 	
                   SET @sql = @sql + ' AND A.COMP_DATE+P.PROD_SERV_TAT <  GETDATE()
                                       AND A.RESOLUTION_STAT_FRONT NOT IN ("BAD","UNHAPPY","UNSATISFACTORY")'  
               ELSE IF @CINCIDENT = 'UNRESOLVED' 	
                   SET @sql = @sql + ' AND A.COMP_DATE+P.PROD_SERV_TAT <  GETDATE()
  									 AND A.RESOLUTION_STAT_FRONT     IN ("BAD","UNHAPPY","UNSATISFACTORY")'  
              END
 
 
  SET @sql = 'SELECT BRN_NAME, PROD_SERV, COMP_TYPE, PROD_SERV_TAT,OVER_CNT,GROUP_CNT,OPINIONS,OPINION_CNT 
    from ('+  @sql+') AA
   UNPIVOT
     (
      OPINIONS_CNT FOR [OPINIONS] IN ([ACCEPT_TAT], [BEYOND_TAT] , [EXACT_TAT]) 
     ) AB  ' 
  
        -----------------------------------
        ------COMPLAINT_TYPE---------------
        -----------------------------------	  
        IF @CDCOMPT <>'ALL' 	
           SET @sql = @sql + ' AND A.COMP_TYPE=@CDCOMPT' 	
                                    
		-------------------------- 
		--------------------------
		---GROUPING & ORDERING---
		--------------------------
		--------------------------

		SET @sql = @sql + ' GROUP BY A.BRN_NAME ,A.PROD_SERV , A.COMP_TYPE,	P.PROD_SERV_TAT ' 

       	
        EXECUTE sp_executesql @sql, N'@CINCIDENT VARCHAR(50), @CDDL1   VARCHAR(50),
                                      @CDDL2     VARCHAR(50), @CDCOMPT VARCHAR(50),
                                      @CFROM     DATETIME   , @CTO     DATETIME'
                                  , @CINCIDENT = @CINCIDENT
                                  , @CDDL1     = @CDDL1	
                                  , @CDDL2     = @CDDL2    
                                  , @CDCOMPT   = @CDCOMPT  
                                  , @CFROM     = @CFROM    
								  , @CTO       = @CTO      
		
			
  END



Проблема с тем, что 'Преобразование'.
----------------------------------

Я определил 2 поля для 'Преобразование'

Они являются [МНЕНИЯ],OPINION_CNT

Должны ли они быть определены с помощью первый оператор select

или с помощью Второй Оператор Select как раз перед тем, как Команда "отмена сведения"
ниже



SET @sql = 'SELECT BRN_NAME, PROD_SERV, COMP_TYPE, PROD_SERV_TAT,OVER_CNT,GROUP_CNT,OPINIONS,OPINION_CNT 
    from ('+  @sql+') AA
   UNPIVOT
     (
      OPINIONS_CNT FOR [OPINIONS] IN ([ACCEPT_TAT], [BEYOND_TAT] , [EXACT_TAT]) 
     ) AB  '




2. Возникли проблемы с группировкой.

Должна ли группировка быть на Первый Оператор Select или на самом деле Второй
инструкция Select.


Я перепробовал все и у меня были эти ошибки
--------------------------------------

Msg 8120, Level 16, State 1, Line 4
Column 'RESPONSE.BRN_NAME' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Msg 4104, Level 16, State 1, Line 21
The multi-part identifier "A.BRN_NAME" could not be bound.

Msg 4104, Level 16, State 1, Line 21
The multi-part identifier "A.PROD_SERV" could not be bound.

Msg 4104, Level 16, State 1, Line 21
The multi-part identifier "A.COMP_TYPE" could not be bound.

Msg 4104, Level 16, State 1, Line 21
The multi-part identifier "P.PROD_SERV_TAT" could not be bound.

Msg 207, Level 16, State 1, Line 3
Invalid column name 'GROUP_CNT'.

Msg 207, Level 16, State 1, Line 3
Invalid column name 'OPINION_CNT'.

(1 row(s) affected)


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

Продолжающееся развитие, которое требует помощи экспертов

1 Ответов

Рейтинг:
10

OriginalGriff

Цитата:
Столбец "RESPONSE.BRN_NAME" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
Видеть здесь: SQL GROUP By и ошибка "имя столбца недопустимо в списке выбора, потому что..." [^]


Member 12770648

Спасибо

Это сложный сценарий нужна помощь за пределами обычного определения