2013-05-07 3 views
0

На самом деле, я использую GridView на vb.net. это sql в источнике данных.SQL, Как использовать временную таблицу и объединить несколько таблиц

SELECT SE.shipperID 
     , SE.sName 
     , SE.consigneeID 
     , SE.conName 
     , SE.agentID 
     , SE.aName 
     , SEDetail.bolId 
     , SE.masterBOLno 
     , SE.coloaderBOLno 
     , SE.NumOBOL 
     , SE.polName 
     , SE.podName 
     , CONVERT(VARCHAR ,SE.onboardDate ,111) 
     , SUM(SEDetail.quantity) 
     , SUM(SEDetail.totalSize) 
     , SUM(SEDetail.totalWeight) 
    FROM SE 
     INNER JOIN SEDetail ON SE.id = SEDetail.bolId 
WHERE SE.id = SEDetail.bolId 
GROUP BY SE.shipperID, SE.sName, SE.consigneeID, SE.conName, SE.agentID, 
     SE.aName, SE.masterBOLno, SE.coloaderBOLno, SE.NumOBOL, SEDetail.bolId, 
     SE.polName, SE.podName, SE.onboardDate 

Я хочу использовать TemplateField добавить 3 колонки, но GridView не может использовать несколько источник данных

column 1. count(SEDetail.containerId) (where b.SEDetail.containerId between 1 and 5) 
column 2. count(SEDetail.containerId) (where b.SEDetail.containerId between 6 and 10) 
column 3. count(SEDetail.containerId) (where b.SEDetail.containerId = 11) 

Итак, как использовать временную таблицу или другой способ группы до одного заявления.

ответ

0

Не уверены, что вкус SQL вы используете, но вы не могли бы добавить следующее к отборному заявлению:

SUM(CASE WHEN b.SEDetail.containerId BETWEEN 1 AND 5 
     THEN 1 ELSE 0 END) AS column1 
SUM(CASE WHEN b.SEDetail.containerId BETWEEN 6 AND 10 
     THEN 1 ELSE 0 END) AS column2 
SUM(CASE WHEN b.SEDetail.containerId = 11 
     THEN 1 ELSE 0 END) AS column3 
Смежные вопросы