Teradata - Where 子句中的案例陈述?
Teradata - Case statement in Where clause?
这应该很简单,但解决方案一直在躲避我。
天睿数据 16.20.32.10.
目前在 Teradata 宏中。宏最终会用在一个SSRS报告中,他们只能选择Y或N。
Macro has a parameter: Paramater1
Date is in TableX:
Datefield
ID
Q1 (Y/N)
Q2 (Y/N)
If Parameter1 = Y
Then Q1 must = Y
Q2 must = Y
If Parameter1 = N
Then everything
我的尝试(错误):
SELECT TOP 10
DateField
,ID
,Q1
,Q2
FROM TABLEX
WHERE DateField = DATE /*Today*/
AND CASE
WHEN Parameter1 = 'Y'
THEN Q1 = 'Y'
,Q2 = 'Y'
ELSE Q1 IN ('Y','N')
Q1 IN ('Y','N')
您不需要 case
表达式。简单的布尔逻辑就足够了:
where (parameter1 = 'Y' and q1 = 'Y' and q2 = 'Y') or
(parameter1 = 'N' and q1 in ('Y', 'N') and q2 in ('Y', 'N'))
这应该很简单,但解决方案一直在躲避我。
天睿数据 16.20.32.10.
目前在 Teradata 宏中。宏最终会用在一个SSRS报告中,他们只能选择Y或N。
Macro has a parameter: Paramater1
Date is in TableX:
Datefield
ID
Q1 (Y/N)
Q2 (Y/N)
If Parameter1 = Y
Then Q1 must = Y
Q2 must = Y
If Parameter1 = N
Then everything
我的尝试(错误):
SELECT TOP 10
DateField
,ID
,Q1
,Q2
FROM TABLEX
WHERE DateField = DATE /*Today*/
AND CASE
WHEN Parameter1 = 'Y'
THEN Q1 = 'Y'
,Q2 = 'Y'
ELSE Q1 IN ('Y','N')
Q1 IN ('Y','N')
您不需要 case
表达式。简单的布尔逻辑就足够了:
where (parameter1 = 'Y' and q1 = 'Y' and q2 = 'Y') or
(parameter1 = 'N' and q1 in ('Y', 'N') and q2 in ('Y', 'N'))