【问题标题】:How to output columns as conditional functions when creating a stored procedure?创建存储过程时如何将列输出为条件函数?
【发布时间】:2021-12-21 22:41:10
【问题描述】:

我正在尝试创建一个存储过程,它会返回一些选定的列。我不知道应该如何对 PayComment 或 TermDate 列使用条件函数。如何使用条件函数返回列?我尝试在创建存储过程时查找有关添加条件语句的任何信息,但它们都涉及使用参数名称。既然被告知这与使用参数无关,那么在创建存储过程时,我还可以使用什么其他方法插入条件函数以返回列?

PayComment(使用条件函数,因此如果 COLA 是,则短语“Cost of 出现生活增加,如果 HireDate = StartDate 然后出现“初始工资率”, 否则应该出现“加薪”)

TermDate(使用条件函数,因此如果 TermDate 为空,则“仍在工作” 应该出现,否则 TermDate 中的值应该在这里-提示使 这项工作你将不得不使用 CONVERT)

到目前为止我的代码:

USE PR;
GO
CREATE PROC spPayIncreaseListing
AS

        IF COLA IS NOT NULL
            PRINT 'Cost of living increase appears.'
            ELSE IF HireDate = StartDate
                PRINT'Initial Payrate'
        ELSE
            PRINT 'Pay raise';
        IF TermDate = NULL
            PRINT 'Still Employed'
        ELSE    CONVERT(varchar, getdate(), 1) AS TermDate;

SELECT FirstName, LastName, CONVERT(varchar, getdate(), 1) AS HireDate,
PayRate, CONVERT(varchar, getdate(), 1) AS PayRateStartDate,
CONVERT(varchar, getdate(), 1) AS PayRateEndDate
FROM EmpData JOIN TempWork
    ON EmpData.EmpID = TempWork.EmpID
ORDER BY LastName, WorkID;

【问题讨论】:

标签: sql sql-server sql-server-2012


【解决方案1】:

我不知道我是否正确理解了您的问题,但如果您尝试根据列中的值打印数据,那么您可以使用

SELECT  FirstName, 
        LastName, 
        CONVERT(varchar, GETDATE(), 1) AS HireDate,
        PayRate, 
        CONVERT(varchar, GETDATE(), 1) AS PayRateStartDate,
        CONVERT(varchar, GETDATE(), 1) AS PayRateEndDate,
        CASE 
            WHEN COLA IS NOT NULL 
                THEN 'Cost of living increase appears.'
                ELSE 
                    CASE 
                        WHEN HireDate = StartDate 
                            THEN 'Initial Payrate'
                        ELSE 'Pay Rise' 
                    END 
        END,
        CASE 
            WHEN TermDate IS NULL 
                THEN 'Still Employed'
            ELSE CONVERT(varchar, GETDATE(), 1) 
        END AS TermDate
FROM 
    EmpData 
JOIN 
    TempWork ON EmpData.EmpID = TempWork.EmpID
ORDER BY 
    LastName, WorkID;

【讨论】:

  • SELECT语句末尾的双END有什么作用吗?
猜你喜欢
  • 1970-01-01
  • 2016-11-28
  • 2011-07-24
  • 1970-01-01
  • 2015-05-09
  • 2015-04-22
相关资源
最近更新 更多