簡體   English   中英

消息 116,級別 16,狀態 1

[英]Msg 116, Level 16, State 1

請幫助我如何解決這個問題

消息 116,級別 16,狀態 1,過程 openclosebycat,第 18 行
當子查詢未通過 EXISTS 引入時,選擇列表中只能指定一個表達式。

消息 116,級別 16,狀態 1,過程 openclosebycat,第 20 行
當子查詢未通過 EXISTS 引入時,選擇列表中只能指定一個表達式。

我的代碼:

select distinct
    (SELECT COUNT(*) 
     FROM dbo.PROBS 
     WHERE (STATUS LIKE 'closed')
       AND (OPEN_TIME >= @DateFrom)
       AND (CLOSE_TIME <= @DateTo)) AS closen,
   (SELECT NUMBER, STATUS, ID 
    FROM dbo.PROBS 
    WHERE (STATUS LIKE 'closed')
      AND (OPEN_TIME >= @DateFrom)
      AND (CLOSE_TIME <= @DateTo)) AS closedet,
  (SELECT NUMBER, STATUS, ID 
   FROM dbo.PROBS 
   WHERE (STATUS LIKE 'open')
     AND (OPEN_TIME >= @DateFrom)
     AND (CLOSE_TIME <= @DateTo)) AS opendet,
  (SELECT COUNT(*)  
   FROM dbo.PROBS
   WHERE (STATUS = 'closed') 
     AND (CATEGORY = 'problem') 
     AND (OPEN_TIME >= @DateFrom)
     AND (CLOSE_TIME <= @DateTo)) AS closeporb,
 (SELECT COUNT(*) 
  FROM dbo.PROBS
  WHERE (STATUS = 'closed') 
    AND (CATEGORY = 'request for information') 
    AND (OPEN_TIME >= @DateFrom)
    AND (CLOSE_TIME <= @DateTo)) AS closereinfo,
 (SELECT COUNT(*)  
  FROM dbo.PROBS 
  WHERE (STATUS = 'closed') 
    AND (CATEGORY = 'incident') 
    AND (OPEN_TIME >= @DateFrom) 
    AND (CLOSE_TIME <= @DateTo)) AS closeincid,
 (SELECT COUNT(*)  
  FROM dbo.PROBS 
  WHERE (STATUS = 'closed') 
    AND (CATEGORY = 'complaint') 
    AND (OPEN_TIME >= @DateFrom) 
    AND (CLOSE_TIME <= @DateTo)) AS closecomp,
 (SELECT COUNT(*)  
  FROM dbo.PROBS 
  WHERE (STATUS = 'open') 
    AND (CATEGORY = 'problem') 
    AND (OPEN_TIME >= @DateFrom)
    AND (CLOSE_TIME <= @DateTo)) AS openporb,
 (SELECT COUNT(*)  
  FROM dbo.PROBS 
  WHERE (STATUS = 'open') 
    AND (CATEGORY = 'request for information') 
    AND (OPEN_TIME >= @DateFrom)
    AND (CLOSE_TIME <= @DateTo)) AS openreinfo,
 (SELECT COUNT(*)  
  FROM dbo.PROBS 
  WHERE (STATUS = 'open') 
    AND (CATEGORY = 'incident') 
    AND (OPEN_TIME >= @DateFrom)
    AND (CLOSE_TIME <= @DateTo)) AS openincid,
 (SELECT COUNT(*)  
  FROM dbo.PROBS 
  WHERE (STATUS = 'open') 
    AND (CATEGORY = 'complaint') 
    AND (OPEN_TIME >= @DateFrom) 
    AND (CLOSE_TIME <= @DateTo)) AS opencomp,
 (SELECT COUNT(*) 
  FROM dbo.PROBS 
  WHERE (STATUS LIKE 'open')
    AND (OPEN_TIME >= @DateFrom)
    AND (CLOSE_TIME <= @DateTo)) AS openn
FROM
    dbo.PROBS

SELECT的子查詢只能選擇一個屬性。 我不確定您要做什么,但您必須重新編寫如下內容:

SELECT   NUMBER
,        STATUS
,        ID
,        SUM(CASE 
                  WHEN STATUS like 'closed' and OPEN_TIME >= @DateFrom and CLOSE_TIME <= @DateTo 
                     THEN 1 
                  ELSE 0 
             END) as closen
,        {same for the other counts}
FROM     dbo.PROBS
GROUP BY NUMBER
,        STATUS
,        ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM