【问题标题】:Query to get data with minimum query cost查询以最低查询成本获取数据
【发布时间】:2014-01-28 12:01:09
【问题描述】:

我有一张表,结构如下:

   BID_FK               AccountID           Amount
    1                   1-1-1-1-1-1-1       4050
    1                   1-1-1-1-1-1-1       4050
    1                   1-1-1-1-1-1-1       4050
    1                   1-1-1-1-1-1-1       4050
    1                   1-1-1-1-1-1-2       500
    1                   1-1-1-1-1-1-2       500
    1                   1-1-1-1-1-1-2       500
    1                   1-1-1-1-1-1-2       500
    2                   1-1-1-1-1-1-1       6580
    2                   1-1-1-1-1-1-1       6580
    2                   1-1-1-1-1-1-1       6580
    2                   1-1-1-1-1-1-1       6580
    2                   1-1-1-1-2-1-1       1000
    2                   1-1-1-1-2-1-1       1000
    2                   1-1-1-1-2-1-1       1000
    2                   1-1-1-1-2-1-1       1000

我想查询这样的结果:

AccountID         Amount(BID_FK = 1)      Amount (BID_FK = 2)
1-1-1-1-1-1-1     16200                   26320
1-1-1-1-1-1-2     2000                    0
1-1-1-1-2-1-1     0                       4000

查询成本最低,因为我有大量数据。

任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    也许这样的事情会有所帮助?

    SELECT
    AccountID,
    SUM(CASE WHEN BID_FK=1 THEN Amount ELSE 0 END) AMOUNT1,
    SUM(CASE WHEN BID_FK=2 THEN Amount ELSE 0 END) AMOUNT2
    FROM yourtable
    GROUP BY AccountId
    

    【讨论】:

      【解决方案2】:
      SELECT AccountID, 
             SUM( CASE WHEN BID_FK=1 THEN Amount ELSE 0 END) AS `Amount(BID_FK = 1)` 
             SUM( CASE WHEN BID_FK=2 THEN Amount ELSE 0 END) AS `Amount(BID_FK = 2)`
      FROM yourTable
      GROUP BY AccountID
      

      【讨论】:

        猜你喜欢
        • 2017-06-15
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        • 1970-01-01
        • 2018-08-21
        • 2022-01-14
        • 2022-01-15
        • 1970-01-01
        相关资源
        最近更新 更多