2013-05-07 75 views
0

实际上,我在vb.net上使用GridView。这是数据源中的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的,但你能不能以下添加到您的select语句:

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