【问题标题】:Insert two select queries in a single row在一行中插入两个选择查询
【发布时间】:2014-03-03 10:18:34
【问题描述】:

我有两个 select 语句,都有一些共同的字段。

这是我的表结构:

Id, year, valueA, ValueB

这是我的两个选择语句

SELECT 
    id, [year],
    SUM(Total_Volume) / (count(distinct(month)) * 7) 
FROM
    TableA  
GROUP BY
    id, [year]

SELECT
    id, [year],
    SUM(Total_volume) / (count(distinct(month)) * 5)
FROM
    TableA  
WHERE 
    weekday NOT IN ('Friday','Saturday') 
GROUP BY 
    station_id, [year]

我对两个语句有两个不同的条件。 Idyear 对于这两种语句都是通用的。

第一个 select 语句的结果应该存储在列 valueA 中,第二个 select 语句的结果应该存储在 ValueB 中。

任何可能的方式来组合这些查询并将它们作为单个语句插入到表中?

【问题讨论】:

    标签: sql sql-server sql-server-2008


    【解决方案1】:
    SELECT  a.id ,a.[year],valA,valB
    from(
    SELECT id ,[year],SUM(Total_Volume)/ (count(distinct(month))*7) valA from TableA  
    group by id,[year]) a INNER JOIN
    
    (select id,[year],SUM(Total_volume)/(count(distinct(month))*5) valB
    from TableA  
    WHERE weekday NOT IN ('Friday','Saturday') 
    group by station_id,[year]) b
    on a.id=b.id and a.[year]=b.[year]
    

    【讨论】:

      【解决方案2】:

      您可以在一个查询中完成这两项计算

      SELECT id, 
         [year], 
         Sum(total_volume) / ( Count(DISTINCT( Month)) * 7 ), 
         Sum(CASE 
               WHEN weekday NOT IN ('Friday', 'Saturday' ) THEN 
               total_volume 
               ELSE 0 
             END) / (Count(DISTINCT( Month)) * 5 ) 
      FROM   tableA 
      GROUP  BY id, 
            [year]; 
      

      【讨论】:

        猜你喜欢
        • 2013-11-20
        • 1970-01-01
        • 2014-09-01
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多