Это беспокоило меня последние несколько часов, и я не могу найти ответ ..
У меня есть следующий запрос
SELECT A, SUM(B) AS total
FROM table
GROUP BY A
теперь столбец B втаблица может содержать только 0 или 1. и A это total1, total2 или total3
. Теперь, когда я использую это непосредственно в базе данных SQL, я получаю хорошую таблицу, содержащую
A total
total1 1
total2 0
toatl3 5
Это точночто я хочу это сделатьОднако, если использовать в моей программе C #.если один из итогов равен 0, он вообще не отображается. Ниже приведен код, который я использую, но он работает нормально только тогда, когда total1, total2 и total3 больше 0, поэтому в приведенной выше таблице будут отображаться только total1 и total3 ...
string total = "A total";
SqlConnection conn = new SqlConnection("connection string goes here I know");
try
{
conn.Open();
SqlCommand total = new SqlCommand(
"SELECT A, SUM(B) AS total FROM table GROUP BY A", conn);
SqlDataReader total_reader = total.ExecuteReader();
while (total_reader.Read())
{
total += total_reader["A"].ToString() + " " + total_reader["total"] + "\n";
}
}
catch (Exception err)
{
serverstats += err.ToString();
}
finally
{
conn.Close();
}
Как сделать так, чтобы она правильно отображала таблицу, даже если total1, total2 и total3 равны 0
, таким образом отображая:
A total
total1 0
total2 0
toatl3 0
Я знаю, что 0 в SQL обычно равен нулю и тому подобное.
Я подозреваю, что это причина того, что C # предполагает, что если значение равно 0, то оно не представляет интереса.
Я надеюсь, что объяснил это достаточно правильно, спасибо за любую помощь заранее!
======= РЕДАКТИРОВАТЬ ======
COALESCE или ISNULL не имеет значения:(
Я предполагаю, что это связано с битом чтения C #, а не с битом запросов SQL.
Как вы можете видеть в моем примере, бит SQL создает таблицу с правильными строками и выполняетне записывать их как NULL. Но бит C #, кажется, читает его как NULL.