2016-03-30 17 views
1

Ich habe eine Tabelle ("ibmqt") mit einer Anzahl von Spalten, und ich möchte eine neue Spalte mit booleschen Werten hinzufügen, die für jede Zeile angibt, ob eine Spalte ("Gebot")) ist größer oder gleich einer anderen Spalte ("ask").Hinzufügen einer Spalte basierend auf anderen Spalten KDB +

Meine erfolgreichste Versuch ist so weit dies:

ibmqt: update (pricecross:select bid>=ask from ibmqt) from ibmqt 

Dies führt jedoch in der folgenden:

time   sym bid ask bsize asize pricecross 
---------------------------------------------------- 
00:00:59.063 IBM 43.53 43.57 10000 9000 (,`ask)!,0b 
00:01:03.070 IBM 43.54 43.59 6500 3000 (,`ask)!,0b 
00:02:31.911 IBM 43.56 43.6 500 4500 (,`ask)!,0b 
00:03:43.070 IBM 43.56 43.56 10000 2500 (,`ask)!,1b 
00:06:01.170 IBM 43.54 43.56 8500 4500 (,`ask)!,0b 
00:06:11.081 IBM 43.56 43.58 500 1500 (,`ask)!,0b 
00:08:15.126 IBM 43.55 43.57 1500 9000 (,`ask)!,0b 

Offensichtlich in der "pricecross" Spalte Ich möchte nur 0, 0, 0 , 1, 0 usw.

Irgendwelche Vorschläge?

Antwort

4

Es ist keine verschachtelte Auswahl erforderlich. Dies wird tun, was Sie brauchen:

ibmqt:update pricecross:bid>=ask from ibmqt 

Oder Sie ibmqt an Ort und Stelle aktualisieren:

update pricecross:bid>=ask from `ibmqt 

q ist ein Array Sprache, daher bid>=ask vergleicht zwei Spalten paarweise und gibt eine Liste von booleans. Dies wird die Idee veranschaulichen:

1 2 3 >= 0 2 4/110b 

Die Liste der booleans dann zu einer neuen Spalte pricecross zugeordnet ist.

Verwandte Themen