Requête complète:
{[tier;company;ccy; startdate; enddate] select Deal_Time, Deal_Date from DEALONLINE_REMOVED where ?[company = `All; 1b; COMPANY = company], ?[tier = `All;; TIER = tier], Deal_Date within(startdate;enddate), Status = `Completed, ?[ccy = `All;1b;CCY_Pair = ccy]}
Requête particulière:
where ?[company = `All; 1b; COMPANY = company], ?[tier = `All; 1b; TIER = tier],
Ce que cette requête essaie de faire est d'obtenir l'état d'affichage d'une liste déroulante.
Si la sélection déroulante est "Tous", la clause where c'est company
-à- dire ou tier
est invalidée, et toutes les sociétés ou niveaux sont affichés.
Je ne sais pas si la requête ci-dessus est correcte car j'obtiens des graphiques étranges lors de leur affichage sur le tableau de bord KDB.
Ce que je recommanderais, c'est de restructurer votre fonction pour utiliser la clause where en utilisant qSQL fonctionnel .
Dans votre cas, vous devez être en mesure de filtrer en fonction de certaines entrées, si c'est "Tout" alors ne filtrez pas d'autre filtre sur cette entrée. Quelque chose comme ça pourrait fonctionner.
/Define sample table
DEALONLINE_REMOVED:([]Deal_time:10#.z.p;Deal_Date:10?.z.d;Company:10?`MSFT`AAPL`GOOGL;TIER:10?`1`2`3)
/New function which joins to where clause
{[company;tier]
wc:();
if[not company=`All;wc:wc,enlist (=;`Company;enlist company)];
if[not tier=`All;wc:wc,enlist (=;`TIER;enlist tier)];
?[DEALONLINE_REMOVED;wc;0b;()]
}[`MSFT;`2]
Si vous remplacez l'entrée par `All, vous verrez que tout est retourné.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots