2016-12-13 71 views
0

我最近写的使用这个SQL语句的变化的报告:返回一个值。 TSQL

select project.*, TF.*, TW.*, TR.*, TH.* from 
(select sum(Quantity) as FQty from unitType where Type = 'F' group by type) TF, 
(select sum(Quantity) as WQty from unitType where Type = 'W' group by type) TW, 
(select sum(Quantity) as RQty from unitType where Type = 'R' group by type) TR, 
(select sum(Quantity) as HQty from unitType where Type = 'H' group by type) TH 

的问题是,如果一个项目可是没有一个单位类型,那么该单位类型的SQL语句返回什么,然后让我整个声明没有任何回报我一直试图找出如何让它返回0如果为null,但似乎没有为我工作。我试过Case,但它告诉我一些关于“isnull是一个无效的列名”我也尝试“如果存在”,但只是抛出语法错误。

有什么建议吗?

+0

我有一个项目,所有4种类型的SQL可以很好地工作。但是如果缺少1个类型,则项目的整个报告将返回null。 –

+0

'FROM'子句中的'project'表/别名在哪里? – DVT

+0

这是一个严重削减声明。我想我可以将它缩减为其中一个选项。 –

回答

0

尝试情况下: SELECT SUM(QUANTITY) AS FQTY FROM (SELECT CASE WHEN QUANTITY IS NULL THEN 0 ELSE QUANTITY END QUANTITY FROM....)

+0

如果语句返回行,则此功能可以很好地工作。但在没有行的类型中使用时不返回任何内容。 –

0

试试这个:

OUTER APPLY (select sum(Quantity) as FQty from unitType where Type = 'F' group by type) TF 
OUTER APPLY (select sum(Quantity) as WQty from unitType where Type = 'W' group by type) TW 
OUTER APPLY (select sum(Quantity) as RQty from unitType where Type = 'R' group by type) TR 
OUTER APPLY (select sum(Quantity) as HQty from unitType where Type = 'H' group by type) TH 

你有因为交叉的0行你一起使用。行数将是...* number of row of TF * number of row of TW *...,并且想象一个产品其中一个数字是0,那么结果是0.

+0

立即在VS2015中'OUTER'附近给我一个语法错误。 –

+0

VS 2015?你为什么不先独立测试你的查询。 – DVT

+0

这是我得到使用的工具。 –