Teradata - Пример дела в пункте Где? - PullRequest
0 голосов
/ 18 июня 2019

Это должно быть просто, но решение ускользает от меня. Teradata 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')

1 Ответ

2 голосов
/ 18 июня 2019

Вам не нужно выражение case . Достаточно простой логической логики:

where (parameter1 = 'Y' and q1 = 'Y' and q2 = 'Y') or
      (parameter1 = 'N' and q1 in ('Y', 'N') and q2 in ('Y', 'N'))
...