0

我需要帮助。

假设我有一张桌子

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'

我必须使用 case when,而不是 case when exists。因为我需要在 OBIEE 报告中使用它。

我需要的结果是这样的:

Mark                                  Count
Ford                                  4
inc Ford with automatic transmition   3

但结果在两种情况下评估为 TRUE ......

期待您的回音。

4

4 回答 4

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 |
于 2014-02-07T09:05:13.027 回答
0

不确定您的问题,但似乎您试图null通过指出case whenvs来避免行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"
于 2014-02-07T08:38:57.600 回答
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 |
于 2014-02-07T09:11:37.917 回答
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

开/关:

MARK                                            COUNT
including Fords with automatic transmitions     3
BMW                                             2
Ford                                            1

小提琴演示

于 2014-02-07T09:16:30.723 回答