SQL几乎没有问题。我想要做的是计算不同的状态并将其显示为数据透视表。代码:将数据加入数据透视表并将空值数据加入
SELECT TAIL_NO,
isnull(pt.A_GR_ST,0) as A_GR_ST,
isnull(pt.O_R_LR_FLTS,0)
FROM (select distinct
X."Tail_#" as TAIL_NO,
COUNT(*) as qty,
X.statuss
FROM X
group by X.Tail_#, X.statuss) p
PIVOT
(
MAX([qty])
FOR [statuss] In([A_GR_ST], [O_R_LR_FLTS])
) As pt
order by TAIL_NO
完美的作品对我来说并给出输出:
TAIL_NO A_GR_ST O_R_LR_FLTS
--------- --------- -------------
RUD 0 1
EW 7 2
ED 100 10
每个状态号(A_GR_ST,O_R_LR_FLTS)可以通过更深层次的天数进行分割:0-1D,2-5d 我想要做的就是将这些日子拆分成现有的数据透视表来查看按日计算的拆分状态结果,如果没有日子,我必须在表格中看到零。输出应该是这样的:
TAIL_NO DAYS A_GR_ST O_R_LR_FLTS
--------- ------- --------- -------------
RUD 0-1d 0 0
RUD 2-5d 0 1
EW 0-1d 7 2
EW 2-5d 0 0
ED 0-1d 40 3
ED 2-5d 60 7
怎么办?预先感谢您。
当我使用代码:
SELECT TAIL_NO,
days,
isnull(pt.A_GR_ST,0) as A_GR_ST,
isnull(pt.O_R_LR_FLTS,0)
FROM (select distinct
X."Tail_#" as TAIL_NO,
COUNT(*) as qty,
X.statuss,
X.days
FROM X
group by X.Tail_#, X.statuss, X.days) p
PIVOT
(
MAX([qty])
FOR [statuss] In([A_GR_ST], [O_R_LR_FLTS])
) As pt
order by TAIL_NO
我得到的输出:
TAIL_NO DAYS A_GR_ST O_R_LR_FLTS
--------- ------- --------- -------------
RUD 2-5d 0 1
EW 0-1d 7 2
ED 0-1d 40 3
ED 2-5d 60 7
不包括零线。我需要拥有它们。
'isnull'不是Oracle中的有效功能。你应该使用'nvl'或'coalesce'。 –
锚定查询中的JOIN在哪里?我在那里看不到任何'join'? –
弗洛林,我知道在Oracle中使用什么,这里是一个来自SQL Server的示例,这是为什么nvl离开,但问题仍然是一样的。 – orangutangas