Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL查询中包含Case语句_Sql_Sql Server_Case - Fatal编程技术网

如何在SQL查询中包含Case语句

如何在SQL查询中包含Case语句,sql,sql-server,case,Sql,Sql Server,Case,我想在我的sql查询中合并这个Case语句,但我收到了以下错误:无效的列名:MsgID。是否有人对代码如何无错误运行有任何建议?请注意,我使用的是SQLServerManagementStudio 2008 个案陈述: 原始查询: 提供错误信息的查询: 导致问题的不是case语句,而是CTE声明-内部的SELECT语句中没有MsgId列,因此不能将其包含在外部的列列表中。您没有将MsgId从(大概)jnlist暴露为A,这里: FROM ( SELECT ItemId,

我想在我的sql查询中合并这个Case语句,但我收到了以下错误:无效的列名:MsgID。是否有人对代码如何无错误运行有任何建议?请注意,我使用的是SQLServerManagementStudio 2008

个案陈述: 原始查询: 提供错误信息的查询:
导致问题的不是case语句,而是CTE声明-内部的
SELECT
语句中没有
MsgId
列,因此不能将其包含在外部的列列表中。

您没有将
MsgId
从(大概)
jnlist
暴露为
A
,这里:

FROM (  SELECT  ItemId,
            CONVERT(VARCHAR(18),[Date]) [Date],
            Parms,
            [OBJECT]
    FROM JnlList
    WHERE UserCode = 'Automation') A
因此,您可能只需要将
MsgId
添加到
SELECT
子句中。如果不是那张桌子上的,告诉我们它是从哪里来的

    ;WITH CTE AS
    (
    SELECT  CONVERT(DATETIME,LEFT([Date],8)+' '+
                         SUBSTRING([Date],10,2)+':'+
                         SUBSTRING([Date],12,2)+':'+
                         SUBSTRING([Date],14,2)+'.'+
                         RIGHT([Date],3)) [Date],
        ItemId,
        Parms,
        [OBJECT]
   FROM (  SELECT  ItemId,
                CONVERT(VARCHAR(18),[Date]) [Date],
                Parms,
                [OBJECT]
        FROM JnlList
        WHERE UserCode = 'Automation') A
   )
   SELECT  ItemId,
    CONVERT(DATE,[Date]) [Date],
    CONVERT(VARCHAR(10),[Date],108) AS [Time],
    SUBSTRING(Parms,1,6) +' Was removed from:' RemovalPath,
    [OBJECT] [Move List:]
   FROM CTE
   WHERE [Date] >= CONVERT(DATE,DATEADD(DAY,-4,GETDATE()))
  WITH CTE AS
  (
  SELECT  CONVERT(DATETIME,LEFT([Date],8)+' '+
                         SUBSTRING([Date],10,2)+':'+
                         SUBSTRING([Date],12,2)+':'+
                         SUBSTRING([Date],14,2)+'.'+
                         RIGHT([Date],3)) [Date],
        ItemId,
        MsgID,
        Parms,
        [OBJECT]
 FROM (  SELECT  ItemId,
                CONVERT(VARCHAR(18),[Date]) [Date],
                Parms,
                [OBJECT]
        FROM JnlList
        WHERE UserCode = 'Automation') A
 )
 SELECT  ItemId, MsgID,
    CONVERT(DATE,[Date]) [Date],
    CONVERT(VARCHAR(10),[Date],108) AS [Time],
    CASE WHEN MsgID = '1' THEN SUBSTRING(Parms,1,6) +' Was removed from:'
    WHEN MsgID = '2' THEN 'This Move List has been cleared of all its media'
    ELSE '' -- Optional Else
    END AS [RemovalPath],
    [OBJECT] [Move List:]
 FROM CTE
 WHERE [Date] >= CONVERT(DATE,DATEADD(DAY,-4,GETDATE()))
FROM (  SELECT  ItemId,
            CONVERT(VARCHAR(18),[Date]) [Date],
            Parms,
            [OBJECT]
    FROM JnlList
    WHERE UserCode = 'Automation') A