2017-03-07 69 views
-1

執行該存儲過程時收到錯誤消息,該消息是:SQL SP - 只有一個表達式可以在選擇列表中指定當子查詢不與引入EXISTS

消息116,級別16,狀態1,過程stpr_SP1,第42行 當子查詢未與EXISTS一起引入時,只能在選擇列表中指定一個表達式。 消息116,級別16,狀態1,過程stpr_SP1,55線 只有一個表達式可以在選擇列表中指定時不與引入的子查詢存在。

任何人都可以在這方面幫助,因爲我卡住了!以下是代碼,謝謝。

SELECT CASE @GroupType WHEN 'Store' THEN 
     (select top 100 percent dbo.Table1.Field1 
     ,dbo.Table1.Location 
     ,count(dbo.Table1.URN) AS [OrderCount] 
     ,convert(numeric(18,2),avg(dbo.Table1.Value)) AS [ValueAvg] 
FROM dbo.Table1 
GROUP BY dbo.Table1.Field1 
     ,dbo.Table1.Location 
ORDER BY dbo.Table1.Field1 ASC 
     ,dbo.Table1.Location ASC) 

WHEN 'Customer' THEN 
     (select top 100 percent dbo.Table1.Field1 
     ,dbo.Table1.InvoiceCode 
     ,dbo.Table1.Location 
     ,count(dbo.Table1.URN) AS [OrderCount] 
     ,convert(numeric(18,2),avg(dbo.Table1.Value)) AS [ValueAvg] 
FROM dbo.Table1 
GROUP BY dbo.Table1.Field1 
     ,dbo.Table1.InvoiceCode 
     ,dbo.Table1.Location 
ORDER BY dbo.Table1.Field1 ASC 
     ,dbo.Table1.InvoiceCode ASC 
     ,dbo.Table1.Location ASC) 
END 
+1

一個標量子查詢只能返回一列。你的代碼不會工作。也許你只是想'如果'而不是'select case'。 –

+0

@GordonLinoff和1行 –

+0

你正在使用哪個dbms? (該代碼是產品特定的。) – jarlh

回答

0

想必你想IF而不是SELECT CASE

IF @GroupType = 'Store' 
BEGIN 
    select top 100 percent dbo.Table1.Field1, . . . 
END; 
IF @GroupType = 'Customer' 
BEGIN 
    select top 100 percent dbo.Table1.Field1, . . . 
END; 
0

在SQL CASE表達,這意味着它返回一個值(單個的)。你想要的是一個IF

IF @GroupType = 'Store' 
BEGIN 
    SELECT t.Field1, 
      t.Location, 
      COUNT(t.URN) AS [OrderCount], 
      CONVERT(numeric(18,2),AVG(t.Value)) AS [ValueAvg] 
    FROM dbo.Table1 t 
    GROUP BY t.Field1, 
      t.Location 
    ORDER BY t.Field1 ASC, 
      t.Location ASC 
END 
IF @GroupType = 'Customer' 
BEGIN 
    SELECT t.Field1, 
      t.InvoiceCode, 
      t.Location, 
      COUNT(t.URN) AS [OrderCount], 
      CONVERT(numeric(18,2),AVG(t.Value)) AS [ValueAvg] 
    FROM dbo.Table1 t 
    GROUP BY t.Field1, 
      t.InvoiceCode, 
      t.Location 
    ORDER BY t.Field1 ASC, 
      t.InvoiceCode, 
      t.Location ASC 
END 
+0

謝謝大家,中頻工作! – Mark

相關問題