SQL 查询 - 不为空
SQL query - not null
我有sql查询:
Select id
,MAX(CASE WHEN (pos = "10") THEN date ELSE NULL END) position10
,MAX(CASE WHEN (pos = "18") THEN date ELSE NULL END) position18
,MAX(CASE WHEN (pos = "20") THEN date ELSE NULL END) position20
FROM table
WHERE
date BETWEEN "${od=2021-05-01 00:00:01}" AND "${do=2021-07-01 00:00:01}"
AND pos IN('10','18','20')
group by id
我知道了 table
id
位置10
位置20
位置30
1
2021-05-02
2021-05-02
2021-05-3
2
2021-05-15
2021-05-16
2021-05-18
3
2021-07-08
空
空
而且我想要未提取 NULL 值的行。
试试这个:
SELECT * FROM (
Select id
,MAX(CASE WHEN (pos = "10") THEN date ELSE NULL END) position10
,MAX(CASE WHEN (pos = "18") THEN date ELSE NULL END) position18
,MAX(CASE WHEN (pos = "20") THEN date ELSE NULL END) position20
FROM table
WHERE
date BETWEEN "${od=2021-05-01 00:00:01}" AND "${do=2021-07-01 00:00:01}"
AND pos IN('10','18','20')
group by id )T
WHERE (position10 IS NOT NULL)
OR (position18 IS NOT NULL)
OR (position20 IS NOT NULL)
但它仍然为我选择 NULL 值出现在某处的位置。
您需要将 WHERE
子句中的 OR
更改为 AND
SELECT * FROM (
Select id
,MAX(CASE WHEN (pos = "10") THEN date ELSE NULL END) position10
,MAX(CASE WHEN (pos = "18") THEN date ELSE NULL END) position18
,MAX(CASE WHEN (pos = "20") THEN date ELSE NULL END) position20
FROM table
WHERE
date BETWEEN "${od=2021-05-01 00:00:01}" AND "${do=2021-07-01 00:00:01}"
AND pos IN('10','18','20')
group by id )T
WHERE position10 IS NOT NULL
AND position18 IS NOT NULL
AND position20 IS NOT NULL
我有sql查询:
Select id
,MAX(CASE WHEN (pos = "10") THEN date ELSE NULL END) position10
,MAX(CASE WHEN (pos = "18") THEN date ELSE NULL END) position18
,MAX(CASE WHEN (pos = "20") THEN date ELSE NULL END) position20
FROM table
WHERE
date BETWEEN "${od=2021-05-01 00:00:01}" AND "${do=2021-07-01 00:00:01}"
AND pos IN('10','18','20')
group by id
我知道了 table
id | 位置10 | 位置20 | 位置30 |
---|---|---|---|
1 | 2021-05-02 | 2021-05-02 | 2021-05-3 |
2 | 2021-05-15 | 2021-05-16 | 2021-05-18 |
3 | 2021-07-08 | 空 | 空 |
而且我想要未提取 NULL 值的行。 试试这个:
SELECT * FROM (
Select id
,MAX(CASE WHEN (pos = "10") THEN date ELSE NULL END) position10
,MAX(CASE WHEN (pos = "18") THEN date ELSE NULL END) position18
,MAX(CASE WHEN (pos = "20") THEN date ELSE NULL END) position20
FROM table
WHERE
date BETWEEN "${od=2021-05-01 00:00:01}" AND "${do=2021-07-01 00:00:01}"
AND pos IN('10','18','20')
group by id )T
WHERE (position10 IS NOT NULL)
OR (position18 IS NOT NULL)
OR (position20 IS NOT NULL)
但它仍然为我选择 NULL 值出现在某处的位置。
您需要将 WHERE
子句中的 OR
更改为 AND
SELECT * FROM (
Select id
,MAX(CASE WHEN (pos = "10") THEN date ELSE NULL END) position10
,MAX(CASE WHEN (pos = "18") THEN date ELSE NULL END) position18
,MAX(CASE WHEN (pos = "20") THEN date ELSE NULL END) position20
FROM table
WHERE
date BETWEEN "${od=2021-05-01 00:00:01}" AND "${do=2021-07-01 00:00:01}"
AND pos IN('10','18','20')
group by id )T
WHERE position10 IS NOT NULL
AND position18 IS NOT NULL
AND position20 IS NOT NULL