如何为每列具有不同日期的3列值编写SQL查询

时间:2015-01-21 03:12:27

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

我有客户要求,他们需要以下数据:

  • 在2014年6月30日之前未支付的总额
  • 从2013年4月1日至2014年2月29日扣除的总金额
  • 自2013年7月1日至2014年1月29日支付的总金额

表格Transactions包含以下内容:

  

支付日期,支付金额,帐户编号,员工编号

这些可能会或可能不会在同一张桌子中,我将弄清楚。但是,每列可能有所不同。如何为这种复杂性编写查询:(有人可以帮我一个相同类型的例子。

1 个答案:

答案 0 :(得分:1)

  

我不知道如果检查null,如果为null,则检查另一列,以及另一个表中的相应列

我认为您正在寻找的关键字是"合并":

create table othertable(id int primary key identity, usethiscolumnwhennull varchar(255));
create table mytable(id int primary key identity, othertable_id int references othertable(id), description varchar(255), thiscolumnissometimesnull varchar(255));

insert into othertable(usethiscolumnwhennull) values ('othertable 1'),('othertable 2');
insert into mytable(othertable_id,description,thiscolumnissometimesnull) values (1,'no nulls here','mytable 1'),(1,'there is a null! use the value from othertable',null);

select description, coalesce(m.thiscolumnissometimesnull,o.usethiscolumnwhennull) from mytable m join othertable o on m.othertable_id=o.id