pom
pom

Reputation: 340

KDB: How to make convert a table column into a list?

if I have a list and table:

a:("12";"34";"56")

bb:([]c:("90";"12";"65"))

And I do this:

a except (select c from bb)

I get the following error:

length
[5]  (.q.except)

[4]  a except (select c from bb)

Perhaps (select c from bb) is still a table? How do I convert a column to a list so that the except statement works?

Upvotes: 2

Views: 7246

Answers (4)

Sean O'Hagan
Sean O'Hagan

Reputation: 1697

One option:

q)a:("12";"34";"56")
q)bb:([]c:("90";"12";"65"))
q)([]c:a) except bb
c
----
"34"
"56"

Upvotes: 1

Rob
Rob

Reputation: 823

Both perfectly good answers, but personally I prefer t[`col]

a:("12";"34";"56");
bb:([]c:("90";"12";"65"));
a except bb[`c]

It also works better if calling dynamically

Upvotes: 1

Jorge Sawyer
Jorge Sawyer

Reputation: 1341

select does indeed output a table. If you want the output to be a list then use exec:

q)a except exec c from bb
"34"
"56"

Upvotes: 4

notlightnorchroma
notlightnorchroma

Reputation: 366

Try using "exec", which will return the column as the list.

a except exec c from bb

or

a except bb`c

Upvotes: 2

Related Questions