kantagrawal Ответов: 2

Как выполнить SQL-запрос в datatable.


у меня есть кое-какая ситуация. в котором я заполняю данные из базы данных в datatable, а затем хочу выполнить некоторое условие для sum и group by в datatable. так что peocedure для выполнения запроса SELECT SQL-запроса в объект DataTable.

мой следующий запрос генерирует вывод в datatable. или можно ли создать временную таблицу следующий запрос с использованием Select * в........ заявление.

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

Select MasterCustomer.CustType as 'Identity Name', MasterCustomer.companyCollegeName as 'Contact Person Name', MasterCustomer.CustomerName as 'Customer Name', SUM(TempOrderDetailNew.BookQuantity) As 'OTS Total Book Quantity', Null As 'QuickBilling Total Book Quantity', Null As 'ReturnOrder Total Book Quantity'   
From MasterCustomer 
Inner Join MasterState On MasterCustomer.State = MasterState.StateID 
Inner Join MasterCity On MasterCustomer.CityID = MasterCity.CityID 
Inner Join TempOrderNew On MasterCustomer.CustomerCode = TempOrderNew.CustomerCode 
Inner Join TempOrderDetailNew On TempOrderNew.BillNumber = TempOrderDetailNew.BillNo  
Where (MasterCustomer.UniversityName = 'UU1' or MasterCustomer.UniversityName Like 'UU1-%' or MasterCustomer.UniversityName Like '%-UU1' or MasterCustomer.UniversityName Like '%-UU1-%')  and MasterCustomer.CustType = 'BookSeller'  
Group By MasterCustomer.CustType, MasterCustomer.companyCollegeName, MasterCustomer.CustomerName 

union All
Select MasterCustomer.CustType as 'Identity Name', MasterCustomer.companyCollegeName as 'Contact Person Name', MasterCustomer.CustomerName as 'Customer Name', Null As 'OTS Total Book Quantity', SUM(QuatOerDet.BookQuantity) As 'QuickBilling Total Book Quantity', Null As 'ReturnOrder Total Book Quantity' 
From MasterCustomer 
Inner Join MasterState On MasterCustomer.State = MasterState.StateID 
Inner Join MasterCity On MasterCustomer.CityID = MasterCity.CityID 
Inner Join [QuotOrder] On MasterCustomer.CustomerCode = [QuotOrder].CustomerCode 
Inner Join [QuatOerDet] On [QuotOrder].BillNumber = [QuatOerDet].BillNo  
Where (MasterCustomer.UniversityName = 'UU1' or MasterCustomer.UniversityName Like 'UU1-%' or MasterCustomer.UniversityName Like '%-UU1' or MasterCustomer.UniversityName Like '%-UU1-%')  and MasterCustomer.CustType = 'BookSeller'  and [QuotOrder].TypeOfBill != 'QUOT'
Group By MasterCustomer.CustType, MasterCustomer.companyCollegeName, MasterCustomer.CustomerName 

union All
Select SUM(BookReturnDetailNew.BookQty) As 'ReturnOrder Total Book Quantity'  
From MasterCustomer 
Inner Join MasterState On MasterCustomer.State = MasterState.StateID 
Inner Join MasterCity On MasterCustomer.CityID = MasterCity.CityID 
Inner Join ReturnBookNew On MasterCustomer.CustomerCode = ReturnBookNew.CustomerCode 
Inner Join BookReturnDetailNew On ReturnBookNew.CreditnoteNo = BookReturnDetailNew.CreditnoteNo  
Where (MasterCustomer.UniversityName = 'UU1' or MasterCustomer.UniversityName Like 'UU1-%' or MasterCustomer.UniversityName Like '%-UU1' or MasterCustomer.UniversityName Like '%-UU1-%')  and MasterCustomer.CustType = 'BookSeller'  
Group By MasterCustomer.CustType, MasterCustomer.companyCollegeName, MasterCustomer.CustomerName 

CHill60

Кроме того, этот огромный запрос потерпит неудачу ... вы не можете объединять запросы, если они не возвращают точно такое же количество столбцов (и типы совпадают)

kantagrawal

Дорогой друг, мой запрос выполнен правильно. и у того же нет столбцов и типа данных. он также заполняет datatable. но он генерирует "общее количество книг" для одного и того же типа CustomerType в разных строках из-за трех запросов объединения. и я просто хочу, чтобы эти три "общего количества книг" для типа CustomerType были в одной строке.

CHill60

Если он выполняется правильно, то вы не скопировали его в свой вопрос должным образом. Первый запрос возвращает

Select MasterCustomer.CustType as 'Identity Name', MasterCustomer.companyCollegeName as 'Contact Person Name', MasterCustomer.CustomerName as 'Customer Name', SUM(TempOrderDetailNew.BookQuantity) As 'OTS Total Book Quantity', Null As 'QuickBilling Total Book Quantity', Null As 'ReturnOrder Total Book Quantity'   
но последняя часть запроса возвращает только
Select SUM(BookReturnDetailNew.BookQty) As 'ReturnOrder Total Book Quantity'  
From MasterCustomer

Чтобы получить дополнительную помощь, я настоятельно рекомендую вам упростить запрос до самого минимума, который будет воспроизводить вашу проблему. Приведите некоторые примеры данных (для этого запроса) и ваши фактические и ожидаемые результаты

2 Ответов

Рейтинг:
1

CHill60

Вы можете использовать объект DataTable.Выберите Метод (Строка) (System. Data)[^]

[EDIT] я перечитал ваш вопрос и заметил

Цитата:
я хочу выполнить некоторые условия для sum и group by в datatable

Выбор в datatable является только фильтром, поэтому он вам не поможет. group by или sum Лично я бы просто вернулся к базе данных за этой информацией. В противном случае вам нужно будет пройти через результаты, например
var sum = 0;
foreach (DataRow dr in dt.Rows)
{
    sum += int.Parse(dr.ItemArray[3].ToString());
}
Вы можете преобразовать некоторые из них в Linq, например, вышеизложенное совпадает с
var sum = dt.Rows.Cast<DataRow>().Sum(dr => int.Parse(dr.ItemArray[3].ToString()));