我需要一些帮助。
让我说我有一张桌子
ID Mark Transmition
1 Ford A
2 Ford A
3 Ford M
4 BMW M
5 BMW M
6 Ford A
现在我需要做一个案例。
CASE WHEN mark = 'Ford' then 'Ford'
WHEN mark = 'Ford' and Transmition = 'A' then ' including Fords with automatic transmitions'
我必须使用案例,而不是存在的情况。因为我需要在OBIEE报告中使用它。
我需要的结果是这样的:
Mark Count
Ford 4
inc Ford with automatic transmition 3
但结果在案例中评估为TRUE ......
期待您的回音。
答案 0 :(得分:1)
查询:
SELECT CASE WHEN mark = 'Ford' THEN 'Ford' END AS Mark,
COUNT(*)
FROM Table1 t
WHERE mark = 'Ford'
GROUP BY mark
UNION ALL
SELECT CASE WHEN mark = 'Ford' AND Transmition = 'A'
THEN 'including Fords with automatic transmitions' END AS Mark,
COUNT(*)
FROM Table1 t
WHERE mark = 'Ford'
AND Transmition = 'A'
GROUP BY CASE WHEN mark = 'Ford' AND Transmition = 'A'
THEN 'including Fords with automatic transmitions' END
结果:
| MARK | COUNT(*) |
|---------------------------------------------|----------|
| Ford | 4 |
| including Fords with automatic transmitions | 3 |
答案 1 :(得分:0)
不确定您的问题,但似乎您试图通过指出null
vs case when
来避免case when exists
行。
怎么样?
SELECT
' including Fords with automatic transmitions' AS "DESCRIPTION",
COUNT("ID") AS "POCET"
FROM some_table
WHERE "Mark" = 'Ford' AND "Transmition" = 'A'
GROUP BY "Mark"
UNION ALL
SELECT
"Mark",
COUNT("ID") AS "POCET"
FROM some_table
WHERE "Mark" = 'Ford'
GROUP BY "Mark"
答案 2 :(得分:0)
你可以不用CASE
这样做:
SELECT Mark, count(1) FROM car GROUP By Mark
UNION
SELECT 'Including '||Mark||' with automatic transmitions' as MM, count(1) FROM car WHERE Transmition = 'A' GROUP By MM;
结果:
| MARK | COUNT(*) |
|---------------------------------------------|----------|
| BMW | 2 |
| Ford | 4 |
| including Fords with automatic transmitions | 3 |
答案 3 :(得分:0)
只需尝试这个
SELECT MARK,Count(1) AS Count FROM
(
SELECT CASE WHEN mark = 'Ford' and Transmition = 'A' then ' including Fords with automatic transmitions'
WHEN mark = 'Ford' and Transmition <> 'A' then 'Ford'
Else 'BMW'
END Mark
FROM Table1
) AS T Group By T.Mark
O / P:
MARK COUNT
including Fords with automatic transmitions 3
BMW 2
Ford 1