我正在使用 SSRS 报告根据类别获取结果,并将类别值更改为 Yes,No,Not Met 替换为 1 = Yes, 2 = No, 3 = Not Met。查询是,
SELECT (
CASE
WHEN A = '99' or B = '99' THEN 3
WHEN C + D >= 10 THEN 1
ELSE 2
END) as Category,
结果是,
N % N % N %
Not Met 10 11% 5 7% 45 20%
Yes 4 5% 30 4% 8 6%
No 10 11% 5 7% 45 20%
如果例如没有找到“未满足”的结果,我想要这样的结果,而不是零。
N % N % N %
Not Met 0 0% 0 0% 0 0%
Yes 4 5% 30 4% 8 6%
No 10 11% 5 7% 45 20%
我已经在查询中尝试了左连接,但它会带来额外的记录。如果没有找到“是”、“否”或“未满足”的记录,我有点卡住了,不知道如何获得零“0”结果。我的疑问是,
SELECT (
CASE
WHEN A = '99' or B = '99' THEN 3
WHEN C + D >= 10 THEN 1
ELSE 2
END
) as Category, [Table A].*, [Table B].*
FROM Table A inner join Table B on Table A.id = Table B.id
WHERE
(
Condition and Field is not null
)
请帮忙,因为这是我的最后一个项目,我被卡住了。
谢谢。
我的样本数据...
MY SAMPLE DATA
TABLE A
=======
ID -------REFNO-------BGDATE-------SBRST-------xx xx ...
-- --------- -- --
1209-------23-------09/09/1900-------13-------XX XX
3453-------12-------14/02/1978-------10-------XX XX
3476-------56-------02/03/1980-------10 -------XX XX
TABLE B
=======
ID-------- CITY -------xx xx ... xx
-- -- -- --
1209-------Glasgow-------xx-------X
3453-------Edinburgh-----xx-------X
3476-------Manchester----xx-------X
SELECT
(
CASE
WHEN BGDATE = '09/09/1900' THEN 3
--I tried this to get Value 3, if no condition met but no success
WHEN NOT EXISTS(BGDATE = '09/09/1900') THEN 3
WHEN SBRST IN ('11','12') THEN 1
ELSE 2
END
) as Category, [Table - A].*, [Table - B].*
FROM [Table - A] inner join [Table - A] on [Table - A].id = [Table - A].ID
----> For Ian <-----This is sample data of my WHERE clause
WHERE
(
(
SBRST IN ('4','5','6','7','11','12') AND SBRST<>'99
AND NOT
(
EXTNT IN ('2','3','4','99') OR
HOR IN ('2','99') OR
(DATEDIFF(day,CHDATE1,CHENDATE1)>='42')
)
)
AND
(
SBRST IS NOT NULL AND
EXTNT IS NOT NULL AND
HOR IS NOT NULL
)
)
order by Category desc
RESULT
======
category----------ID----------REFNO----------BGDATE----------SBRST----------xx
3-----------------1209----------23----------09/09/1900----------13----------XX
2-----------------3453----------12----------14/02/1978----------10----------XX
2-----------------3476----------56----------02/03/1980----------10----------Xx
需要考虑的点:
1)以上是我的样本数据。
2)表A和B在ID上有内连接会带来结果。
3) 根据上述 SELECT 条件填充类别,但问题是,*如果没有条件匹配,则不会填充类别,但我也想要缺少的类别。在这种情况下,它是“1”。
我想要这样的东西。
EXPECTED RESULT
======
category----------ID----------REFNO----------BGDATE----------SBRST----------xx
3-----------------1209----------23----------09/09/1900----------13----------XX
2-----------------3453----------12----------14/02/1978----------10----------XX
2-----------------3476----------56----------02/03/1980----------10----------XX
1-----------------0-------------0-----------NULL----------------0-----------NULL
另一种解决方案可能是,如果我创建另一个包含所有 3 个类别的表,然后使用 RIGHT OUTER JOIN 来获得结果,但我不知道如何?