Я снимаю некоторые записи, которые имеют COUNT от 0 или больше 1. Запрос работает и корректно обрабатывается и отлично смотрится в результатах SQL.Но я перебираю результаты и создаю заголовок, группирую их по странам и перечисляю имена пользователей для этой страны.
Это мой SQL:
SELECT * FROM (
SELECT u.ContactName
,cu.[User ID]
,c.Name
,c.ID
,cu.[Foreign Table]
,count(*) OVER (PARTITION BY c.ID) AS user_in_this_country
FROM dbo.Country AS c
INNER JOIN dbo.CountryUser AS cu ON c.ID = cu.[Foreign ID]
INNER JOIN dbo.UserColder AS u ON cu.[User ID] = u.ID
WHERE EXISTS (
SELECT *
FROM CountryUser AS cu2
WHERE cu2.[Foreign ID] = cu.[Foreign ID]
AND cu2.[User ID] <> cu.[User ID]
AND cu2.[Foreign Table] = 'Country')
)
t
WHERE user_in_this_country > 1 or user_in_this_country = 0
ORDER BY Name ASC
Это будетвытащить данные, которые будут выглядеть следующим образом:
Justin United States 2
Bob United States 2
Тогда мой метод для цикла и добавить заголовки / группу:
string lastValue = "";
protected string AddGroupingHeader(string Value)
{
//Get the data field value of interest for this row
string currentValue = Value;
//Specify name to display if dataFieldValue is a database NULL
if (currentValue.Length == 0)
{
currentValue = "";
}
//See if there's been a change in value
if (lastValue != currentValue)
{
//There's been a change! Record the change and emit the header
lastValue = currentValue;
return "<div style='float: left; font-size: 16px; margin: 10px 0px 0px 10px;'>" + currentValue + "</div>";
}
else
{
return "";
}
}
и в aspx я просто передаю значениевот так:
<%# AddGroupingHeader(Eval("Name").ToString())%>
Теперь, если у меня есть несколько записей, он работает правильно и отображает как:
United States
- Justin
- Bob
China
- Frank
- Ted
Но это проблема.Если у меня просто есть:
United States Justin
United Bob
Тогда заголовок не ставится.Он делает это:
Justin
Bob
Извините за длинный пост, но кто-нибудь видит что-нибудь, что может вызвать это, я был в тупике в течение 2 дней.: (
Спасибо!