SELECT DISTINCT
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE dbo.PE_ASS_SumByPD.BADGE END) AS BADGE
FROM dbo.PE_ASS_SumByPD CROSS JOIN
dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate
条件成立(dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww ), 但dbo.PE_ASS_SumBylastPD.BADGE没有显示, 我察看了一下,dbo.PE_ASS_SumByPD表里是空的, 所以请问如何在dbo.PE_ASS_SumByPD表为空的前提下显示dbo.PE_ASS_SumBylastPD.BADGE ???
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE dbo.PE_ASS_SumByPD.BADGE END) AS BADGE
FROM dbo.PE_ASS_SumByPD CROSS JOIN
dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate
条件成立(dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww ), 但dbo.PE_ASS_SumBylastPD.BADGE没有显示, 我察看了一下,dbo.PE_ASS_SumByPD表里是空的, 所以请问如何在dbo.PE_ASS_SumByPD表为空的前提下显示dbo.PE_ASS_SumBylastPD.BADGE ???
SELECT DISTINCT
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE IsNull(dbo.PE_ASS_SumByPD.BADGE, dbo.PE_ASS_SumBylastPD.BADGE) END) AS BADGE
FROM dbo.PE_ASS_SumByPD CROSS JOIN
dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate
SELECT *
FROM dbo.PE_ASS_SumByPD CROSS JOIN
dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate
WHERE dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww --WHERE dbo.CurrentPD_MinWW.minww <> dbo.Rundate.nsww
来测试一下数据,是否存在。就可以找出问题的地方。
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE A.BADGE END) AS BADGE
FROM (SELECT BADGE FROM dbo.PE_ASS_SumByPD UNION SELECT '1') A CROSS JOIN
dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate如果表是空的话 ,CROSS JOIN 就连接不出数据,所以要先加一个值
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE dbo.PE_ASS_SumByPD.BADGE END) AS BADGE
FROM dbo.PE_ASS_SumByPD LEFT JOIN
dbo.PE_ASS_SumByLastPD ON 關聯條件
CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE IsNull(A.BADGE, dbo.PE_ASS_SumBylastPD.BADGE) END) AS BADGE
FROM (SELECT BADGE FROM dbo.PE_ASS_SumByPD UNION SELECT NULL) A CROSS JOIN
PE_ASS_SumBylastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate
if (select count(*) as aa dbo.PE_ASS_SumByPD)=0
begin
set @sql='SELECT DISTINCT (CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE ELSE 0 END) AS BADGE FROM dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN dbo.Rundate'
end
else
begin
set @sql='SELECT DISTINCT (CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE ELSE dbo.PE_ASS_SumByPD.BADGE END) AS BADGE
FROM dbo.PE_ASS_SumByPD CROSS JOIN dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN dbo.Rundate'
endexec (@sql)
SELECT DISTINCT
(CASE WHEN dbo.CurrentPD_MinWW.minww = dbo.Rundate.nsww
THEN dbo.PE_ASS_SumBylastPD.BADGE
ELSE (select top 1 BADGE from PE_ASS_SumByPD ) END) AS BADGE
FROM dbo.PE_ASS_SumByLastPD CROSS JOIN
dbo.CurrentPD_MinWW CROSS JOIN
dbo.Rundate