Yonathan1111 Ответов: 1

Количество SQL скрипт не работает, как ожидалось на агрегированных данных


Дорогие все,

У меня есть эта хранимая процедура, которая возвращает агрегированные данные, и я столкнулся с проблемой, прошло некоторое время с тех пор, как я работал над SQL-скриптами, я хотел подсчитать столбец, который имеет более одной частоты, однако вывод скрипта не таков, как я хотел.

Пример сценария выглядит следующим образом:

Примечание: Для удобства я изменил настоящие названия таблиц...

Пожалуйста, не стесняйтесь, если у вас, ребята, есть какие-либо вопросы или объяснения.

заранее спасибо

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

BEGIN

DECLARE @AppSettings TABLE(Name NVARCHAR(50) NULL)	
	
	INSERT INTO @AppSettings 
	SELECT SettingName FROM ApplicationSetting 

DECLARE @Users TABLE(Name NVARCHAR(50) NULL)

	INSERT INTO @Users 	
	SELECT UserName FROM UserProfile  

DECLARE @Activities TABLE(Name NVARCHAR(50) NULL)

	INSERT INTO @Activities 
	SELECT Name FROM StateTemplate 


SELECT  Table2.Name AS ActivityName, --		
		Count(Table2.Name) AS ActivityCount, -- Frequency 
		Table1.PerformedBy, -- 
		Table4.SettingName

FROM        Table1 INNER JOIN 
			Table5 ON Table1.ParentBusinessProcessID = Table5.BusinessProcessID INNER JOIN 
			Table3 ON Table5.ProcessTypeID = Table3.ProcessTemplateID INNER JOIN
            Table2 ON Table3.ProcessTemplateID = Table2.ParentProcessTemplateID INNER JOIN
            Table4 ON Table3.ProcessTemplateID = Table4.SettingValue

WHERE			Table4.SettingName IN (SELECT * FROM @AppSettings) AND
				Table1.PerformedBy IN (SELECT * FROM @Users) --AND
				Table2.Name In (SELECT * FROM @Activities)

GROUP BY		Table2.Name, 
				Table1.PerformedBy,
				Table4.SettingName

ORDER BY		PerformedBy

END
Wrong OUTPUT 

ZZ	8	userNameX 	AA
ZZ	4	userNameX 	BB
YY      8	userNameX 	AA
YY      4	userNameX 	BB
XX	8	userNameX 	AA
XX	4	userNameX 	BB
WW	8	userNameX 	AA
WW	4	userNameX 	BB
VV	8	userNameX 	AA
VV	4	userNameX 	BB

CHill60

Образец сведения помогли бы

jamuro77

Было бы необходимо узнать больше, по крайней мере, о двух вопросах:
1) Какой правильный набор результатов вы ищете?
2) Дополнительная информация о данных в таблицах

Yonathan1111

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

1 Ответов

Рейтинг:
2

jamuro77

Как я уже говорил в предыдущих комментариях, было бы необходимо узнать больше об этом вопросе. Во всяком случае, вы должны знать следующее. Возможно, это полезно для вас:

1) Count ([FieldName]) подсчитывает только не нулевые значения в FieldName
2) Count (distinct [FieldName]) подсчитывает только уникальные не нулевые значения в FieldName
3) Count ( * ) подсчитывает все значения, включая null, в FieldName