在SQL Server中临时编辑字段

时间:2017-03-14 14:55:42

标签: sql sql-server sql-server-2008

我试图以多种形式显示数据,但我对MSSQL很新。有一个包含50行的表格,其中包含01Jan2017字段,但我需要显示此字段,如01/01/2017。我如何在MSSQL中实现这一点?。

我尝试了一些小游标示例,因为这只是一个示例,我将进一步编辑数据,我需要迭代所请求的每一行并执行多次编辑。到目前为止我所取得的成就是:

CREATE PROCEDURE dbo.text2
AS
select TOP (50) * FROM table;
GO

这将显示50行,但我无法通过其行或列进行迭代。我也试过

DECLARE cur_mkt CURSOR FOR
select TOP (50) [field] FROM  table

OPEN cur_mkt
FETCH NEXT FROM cur_mkt INTO @A

WHILE (@@FETCH_STATUS = 0)
    BEGIN
        PRINT @A    
        FETCH NEXT FROM cur_mkt INTO @A
    END

CLOSE cur_mkt
DEALLOCATE cur_mkt

但是这只会显示一列,并且它不是一个可行的解决方案,因为我应该能够使用至少150列。

我也尝试过功能但我无法实现它。你能不能给我一个更好的指示,看看该尝试什么?。

表格中的数据示例如下

ID   DATE         PIECE1   PIECE2
1    01Jan2017    ABC      DEF
2    02Jan2017    ABC      DEF

现在在结果中,必须显示数据

ID   DATE         PIECE1   PIECE2  JOIN
1    01/01/2017   ABC      DEF     ABCDEFGHE
2    02/01/2017   ABC      DEF     ABCDEFGHI

" GHE"或者" GHI"在连接的行上添加了一个字符串,可以是GHE或GHI。

提前致谢。

1 个答案:

答案 0 :(得分:2)

Select convert(varchar(10),convert(date,'15Jan2017'),101)

返回

01/15/2017
  

编辑 - 针对新的Infor进行了更新

Select Top 50  -- << Optional
       A.ID
      ,Date   = convert(varchar(10),convert(date,A.[DATE]),101)
      ,A.PIECE1
      ,A.PIECE2
      ,[JOIN]   = A.PIECE1+A.PIECE2+B.OTHERFIELD  
 From  Table1 A
 Join  Table2 B  on (A.ID=B.ID)

会返回这样的内容

ID  Date        PIECE1  PIECE2  JOIN
1   01/01/2017  ABC     DEF     ABCDEFxxx
2   01/02/2017  ABC     DEF     ABCDEFyyy