想知道是否有人建议使用U-SQL实现案例或IF语句。例如,我如何转换它:
SELECT
FirstName, LastName,
Salary, DOB,
CASE Gender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
END
FROM Employees;
答案 0 :(得分:5)
你可以使用内联C#表达式来处理类似的简单事情(虽然没有测试)
SELECT
FirstName, LastName,
Salary, DOB,
Gender == "Male" ? "M" : "F"
FROM Employees
如果更复杂,可以考虑在C#中编写用户定义的运算符 查看MSDN教程here
答案 1 :(得分:2)
使用?:代替CASE的示例可在Common SQL Expressions in U-SQL下的官方U-SQL语言参考站点获得。
答案 2 :(得分:2)
自2018年春季以来,U-SQL根据发行说明here支持ANSI CASE
表达式。一个简单的示例:
DECLARE @outputFile string = @"\output\output.csv";
@Employees =
SELECT *
FROM (
VALUES
( "w", "Bob", 1999, "31/12/1999", "M" ),
( "Sheena", "Easton", 1999, "31/12/1998", "F" )
) AS Employees(FirstName, LastName, Salary, dob, Gender);
@output =
SELECT FirstName,
LastName,
Salary,
dob,
CASE Gender
WHEN "M" THEN "Male"
WHEN "F" THEN "Female"
END AS Gender
FROM @Employees;
OUTPUT @output
TO @outputFile
USING Outputters.Csv(quoting : false);
答案 3 :(得分:0)
上述解决方案是正确的。但我更喜欢使用IF代替内联C#代码。
SELECT
FirstName, LastName,
Salary, DOB,
IF(Gender == "Male", "M", "F") AS Gender
FROM Employees
答案 4 :(得分:0)
选择
名字,姓氏,
工资,DOB,
(性别=='M')?男性
(性别=='F')? “女性” AS性别
来自员工;
这将适用于您的案例
答案 5 :(得分:0)
由于其他答案没有提供完全相同的答案,因此我在下面提供了相同的答案。
U-SQL中的相应表达式是。我们必须使用条件表达式(?:
)。有关更多信息,您可以参考以下链接:
C# Expressions for ?:
TSQL and USQL equivalents
SELECT
FirstName, LastName,
Salary, DOB,
(Gender == "M") ? "Male" : (Gender == "F") ? "Female" : "Unknown" AS Gender
FROM Employees;