2016-10-19 2 views
-2

я не знаю, почему следующий запрос не работает:ВЫБРАТЬ запрос с использованием группы по

SELECT whs_code, pdt_code,case_dt_yyyymmdd, fresh_frozen_status, 
SUM(qty_cases_on_hand)-Qty, SUM(qty_weight_on_hand)-Wt, operation 
    FROM 
    (
     SELECT whs_code,pdt_code,case_dt_yyyymmdd,fresh_frozen_status,operation,SUM(qty_cases_on_hand) AS Qty, SUM(qty_weight_on_hand) AS Wt 
      FROM tbl_inventory_activity_rpt1 
       WHERE operation ='RU' 
       GROUP BY whs_code,pdt_code,case_dt_yyyymmdd,fresh_frozen_status,operation 
    ) 
    WHERE operation='SU' 
    GROUP BY whs_code,pdt_code,case_dt_yyyymmdd,fresh_frozen_status,operation` 

Ошибка:

Msg 156, Level 15, State 1, Line 4 Некорректное синтаксис рядом с ключевым словом «WHERE».


Чтобы сделать это просто, чтобы понять, что я пытаюсь сделать здесь, смотрите пример
мне нужны данные как результат

(SELECT x FROM tbl_table Where column y='SU')-(SELECT x FROM tbl_table Where column y='RU') 
+0

Что значит «не работает» означает здесь ?, это порождает ошибку ?, неправильные результаты ?, что? – Lamak

+0

Общее правило GROUP BY: если указано предложение GROUP BY, каждая ссылка столбца в списке SELECT должна либо идентифицировать столбец группировки, либо быть аргументом функции set. – jarlh

+0

Удалите «» и «_». Кроме того, разрыв строки и отступы ваш запрос, чтобы его можно было прочитать правильно. – Woozar

ответ

1
SELECT ru.whs_code, 
      ru.pdt_code, 
      ru.case_dt_yyyymmdd, 
      ru.fresh_frozen_status, 
      ru.operation, 
      ru.Qty - su.Qty AS Qty_Diff, 
      ru.Wt - su.Wt AS Wt_Diff 
     FROM  
    (
     SELECT whs_code, 
       pdt_code, 
       case_dt_yyyymmdd, 
       fresh_frozen_status, 
       operation, 
       SUM(qty_cases_on_hand) AS Qty, 
       SUM(qty_weight_on_hand) AS Wt 
      FROM tbl_inventory_activity_rpt1 
     WHERE operation ='RU' 
     GROUP BY whs_code,pdt_code,case_dt_yyyymmdd,fresh_frozen_status,operation 
    ) ru, 
    (
     SELECT whs_code, 
       pdt_code, 
       case_dt_yyyymmdd, 
       fresh_frozen_status, 
       operation, 
       SUM(qty_cases_on_hand) AS Qty, 
       SUM(qty_weight_on_hand) AS Wt 
      FROM tbl_inventory_activity_rpt1 
     WHERE operation ='SU' 
     GROUP BY whs_code,pdt_code,case_dt_yyyymmdd,fresh_frozen_status,operation 
    ) su 
WHERE ru.whs_code = su.whs_code 
    AND ru.pdt_code = su.pdt_code 
    AND ru.case_dt_yyyymmdd = su.case_dt_yyyymmdd 
    AND ru.fresh_frozen_status = su.fresh_frozen_status 
    AND ru.operation = su.operation; 
+0

Что работает @Teja, Что делать, если мне нужны все строки, которые являются «SU», а не «RU» –

+0

Измените псевдоним из ru к su в вашем внешнем запросе. – Teja