2014-10-28 5 views
-1

Я пытаюсь создать суммирование на основе количества графов для определенного столбца. Если вы посмотрите на последнюю строку в разделе «Выбор ниже», вы увидите, что я попытался выполнить оператор CASE. Однако он производит все значения NULL. По-моему, я понимаю, почему (каждая строка имеет уникальный набор значений), но я не знаю, как исправить мою проблему.Подведение итогов

SELECT 
    TotalFilesProduced.ReviewDate, 
    TotalFilesProduced.FileReviewedByUserID, 
    TotalFilesProduced.FileSource, 
    TotalFilesProduced.FilesIndexed TotalIndexed, 
    TotalFilesProduced.FileNumberofPages TotalFileNumberofPages, 
    TotalFilesProduced.FilesProduced, 
    CASE WHEN COUNT(DISTINCT FileReviewedByUserID) > 1 THEN SUM(TotalFilesProduced.FilesIndexed) END 
FROM 
(SELECT 
    CAST(ibfp.FileReviewedDate AS DATE) ReviewDate, 
    ibfp.FileReviewedByUserID, 
    FileSource, 
    COUNT(*) FilesProduced, 
    COUNT(DISTINCT ibf.InboundFileID) FilesIndexed, 
    SUM(CASE WHEN ibfp.FromPage = ibfp.ToPage THEN 1 
    ELSE ibfp.ToPage-ibfp.FromPage + 1 END) [FileNumberofPages] 
FROM 
    dbo.InboundFilePartitions ibfp 
    INNER JOIN dbo.InboundFiles ibf ON ibfp.InboundFileID = ibf.InboundFileID 
WHERE 
     CAST(ibfp.FileReviewedDate AS DATE) >= '10/22/2014' 
    and CAST(ibfp.FileReviewedDate AS DATE) <= '10/22/2014' 
    and ibf.ProjectID in (110) 
GROUP BY 
    CAST(ibfp.FileReviewedDate AS DATE), 
    ibfp.FileReviewedByUserID, 
    FileSource 
) TotalFilesProduced 
GROUP BY 
    TotalFilesProduced.ReviewDate, 
    TotalFilesProduced.FileReviewedByUserID, 
    TotalFilesProduced.FileSource, 
    TotalFilesProduced.FilesIndexed, 
    TotalFilesProduced.FileNumberofPages, 
    TotalFilesProduced.FilesProduced 

Вот пример для дальнейшего уточнения - здесь Идентификатор_пользователь 1036 производства в NULL это хорошо, так как он появляется только один раз, а для 804 - я хотел бы суммировать TotalIndexed столбец так NULL области следует читать 139 (для как экземпляры, появляется 804)

ReviewDate | FilereviewedByUserID | FileSource | TotalIndexed | TotalFileNumberofPages | FilesProduced | (No Column Name) /*My Sum*/ 
------------------------------------------------------------------------------------------------------------------------------------ 
2014-10-22 | 804     | 1   | 1   | 67      | 1    | NULL 
------------------------------------------------------------------------------------------------------------------------------------ 
2014-10-22 | 1036     | 1   | 1   | 17      | 1    | NULL 
------------------------------------------------------------------------------------------------------------------------------------ 
2014-10-22 | 804     | 2   | 138   | 3322     | 184   | NULL 
+0

Поскольку '' FileReviewedByUserID' и FilesIndexed' находятся в вашем 'оператор GROUP BY' эти суммы никогда не будут более одного. Можете ли вы уточнить, что вы пытаетесь подсчитать? –

+0

FilereviewedByUserID - если пользователь появляется более одного раза (количество - я решил использовать), тогда суммируйте их столбец TotalIndexed – StayPuft

+0

В третий раз. С группой по счету никогда не будет> 1. Голосование закрывается, так как непонятно, что вы пытаетесь сделать. – Paparazzi

ответ

1

Как указано в комментарии
Это всегда будет ложным

CASE WHEN COUNT(DISTINCT FileReviewedByUserID) > 1 

Из

GROUP BY ibfp.FileReviewedByUserID 

И у вас есть другие странные вещи

 CAST(ibfp.FileReviewedDate AS DATE) >= '10/22/2014' 
    and CAST(ibfp.FileReviewedDate AS DATE) <= '10/22/2014' 

такая же, как

CAST(ibfp.FileReviewedDate AS DATE) = '10/22/2014' 

Больше странных вещей

SUM(CASE WHEN ibfp.FromPage = ibfp.ToPage THEN 1 
    ELSE ibfp.ToPage-ibfp.FromPage + 1 END) [FileNumberofPages] 

такая же, как

SUM(ibfp.ToPage-ibfp.FromPage + 1) [FileNumberofPages] 

не уверен, что вы пытаетесь сделать, но группа по по группе не является общим

+0

Это на самом деле я просто упрощаю гораздо больший запрос. Следовательно, группа By в From и другая группа. – StayPuft

+0

Также, как правило, это диапазон заданных периодов - не один день. Кроме того, он не думал упростить страницу, но теперь я вижу, что могу: P – StayPuft

Смежные вопросы