SQL Server:仅根据另一列

时间:2016-01-21 14:53:09

标签: sql-server

我试图从昨天的总计中扣除今天的总计 - 这些总数保持在不同的行中,但我似乎无法隔离总和以减去它们以查看差异。以下是我目前在表格中的内容:

有两(2)列:

  • 来源nchar(45)
  • 金额decimal(19,3)

到目前为止,我一直试图:

select
( 
    select amount as TotalToday 
    from tblDailySalesvyest
    where Source = 'grand total yest'
) ,
(
    select amount as TotalYest 
    from tblDailySalesvyest
    where Source = 'grand total today'
)
from tblDailySalesvYest

但是我得到的行数和列数一样多。 如何隔离每个总数并从另一个中减去一个?

Source                                          Amount
Invoiced Today                                  NULL
Invoiced Yest                                   38009.320
Credited Today                                  NULL
Credited Yest                                   -579.920
Open Orders Today                               7913.040
Open Orders Yest                                17499.162
Grand Total Yest                                129300.562
Grand Total Today                               8650.010

2 个答案:

答案 0 :(得分:1)

使用条件和

Successfully verified: <My Installer.exe>

答案 1 :(得分:0)

首先,您的来源是否混合?当来源为“YEST总数”时,您将金额称为TotalToday。

那就是说,如果这是你想要的,这听起来像笛卡尔产品不是问题。我不会使用CASE,因为它往往比平连接慢。您可以加入FROM,也可以将两个完全包含的select语句嵌套在整个select中:

1

SELECT
  SUM( today.amount ) AS TotalToday,
  SUM( yest.amount ) AS TotalYest
FROM
  tblDailySalesvYest AS today,
  tblDailySalesvYest AS Yest
WHERE
  today.Source = 'grand total today' AND
  yest.Source = 'grand total yest'

2

SELECT
  ( SELECT SUM( amount ) FROM tblDailySalesvYest WHERE source = 'grand total today' ) AS TotalToday,
  ( SELECT SUM( amount ) FROM tblDailySalesvYest WHERE source = 'grand total yest' ) AS TotalYest