SQL,如何使用临时表和连接多个表

时间:2013-05-07 07:21:13

标签: sql vb.net

实际上,我在vb.net上使用GridView。这是数据源中的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 )

那么,如何使用临时表或其他方式将一组语句分组。

1 个答案:

答案 0 :(得分: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