-
Notifications
You must be signed in to change notification settings - Fork 185
Closed
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behaviorfunc trans 🌍Translation of individual functions to SQLTranslation of individual functions to SQL
Milestone
Description
@jnolis commented on Nov 28, 2017, 6:36 PM UTC:
Occasionally, I will need to use pmin or pmax to replace values above or below a threshold, for instance:
require(dplyr)
data_frame(X = 1:10) %>%
mutate(Y = pmax(X,5))However, when I use dbplyr to try and do this using a SQL Server table, I get the following error:
tbl(con,"OrderInfo") %>%
mutate(Test = pmax(Revenue,0))Error: <SQL> 'SELECT TOP 10 "CustomerId", "OrderId", "ClientOrderId", "Channel", "OrderDate", "Revenue", "Cost", MAX("Revenue", 0.0) AS "Test"
FROM "OrderInfo"'
nanodbc/nanodbc.cpp:1587: 42000: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]The MAX function requires 1 argument(s).
As you can see, the SQL code generator assumes that I want to do a pairwise MAX, however SQL Server does not support that (only taking the maximum over a single column).
A cursory Stack Overflow search suggests that to do this operation a case statement could be used. I think either the SQL code generator should either be updated to do this, or an error should be generated at the time of calling the mutate.
This issue was moved by krlmlr from tidyverse/dplyr/issues/3227.
Metadata
Metadata
Assignees
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behaviorfunc trans 🌍Translation of individual functions to SQLTranslation of individual functions to SQL