2016-04-14 11 views
0

を返し、私はこのクエリを実行する場合、私は、私はこのエラーをこのクエリCASEは、複数の値

select a.Tag,a.Type, a.[Starting Date], a.[Time From 1], a.[Time To 1], 
     DATEPART(dw,CBCal.Date) as [TagderWoche], CBCal.Date, CBCal.[Customer No_], 
     Description, [POS Holiday] 
     from [ReplicationLayer].[BackPro].[CustomerBPCal] as CBCal 
CROSS APPLY 
(
    select Type,[Starting Date],[Time From 1],[Time To 1] , 
    (case 
     WHEN DATEPART(dw,CBCal.Date)=1 then (select [Time From 1] from MyTable 
               where [Valid at Monday]=1 
               and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=3 then (select [Time From 1] from MyTable 
               where [Valid at Wednesday]=1 
               and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=4 then (select [Time From 1] from MyTable 
               where [Valid at Thursday]=1 
               and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=5 then (select [Time From 1] from MyTable 
               where [Valid at Friday]=1 
               and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=6 then (select [Time From 1] from MyTable 
               where [Valid at Saturday]=1 
               and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=7 then (select [Time From 1] from MyTable 
               where [Valid at Sunday]=1 
               and [Customer No_]=CBCal.[Customer No_]) 
    end) as Tag 
    from [CustomerShopAndArrivalTime] 
) as a 
where CBCal.[Customer No_]=1 and CBCal.[POS Holiday]=0 and Date='2015-04-15' 

を取得していています: サブクエリは複数の値を返しました。サブクエリが=、!=、=のあとに続く場合、またはサブクエリが式として使用されている場合は、これは許可されません。

私はこの問題

+2

のような関数max、最小またはトップを使用することができますを解決するために何をすべきか。そうだとしたら、何をしたいですか? – jarlh

+0

これはケースの問題で、CASEで1つのクエリしか実行しません。私は複数のSELECT arがCASE内で実行されたと考えています – Kaja

+0

ケースには、値を一度、複数の大文字と小文字の値を使用する別の構文があります: 'CASEの値WHEN 1 THEN ... WHEN 2 THEN ...' –

答えて

0

あなたのサブ選択を超える1行を返すことがなぜ考えてみましょう。この

select a.Tag, 
      a.Type, 
      a.[Starting Date], 
      a.[Time From 1], 
      a.[Time To 1], 
      DATEPART(dw,CBCal.Date) as [TagderWoche], 
      CBCal.Date, 
      CBCal.[Customer No_], 
      Description,[POS Holiday] 
from [ReplicationLayer].[BackPro].[CustomerBPCal] as CBCal 
    CROSS APPLY 
    (
    select Type,[Starting Date],[Time From 1],[Time To 1] , 
    (case 
     WHEN DATEPART(dw,CBCal.Date)=1 then 
         (select top 1 [Time From 1] from MyTable where [Valid at Monday]=1 and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=3 then 
         (select top 1 [Time From 1] from MyTable where [Valid at Wednesday]=1 and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=4 then 
         (select top 1 [Time From 1] from MyTable where [Valid at Thursday]=1 and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=5 then 
         (select top 1 [Time From 1] from MyTable where [Valid at Friday]=1 and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=6 then 
         (select top 1 [Time From 1] from MyTable where [Valid at Saturday]=1 and [Customer No_]=CBCal.[Customer No_]) 
     WHEN DATEPART(dw,CBCal.Date)=7 then 
         (select top 1 [Time From 1] from MyTable where [Valid at Sunday]=1 and [Customer No_]=CBCal.[Customer No_]) 
     end) as Tag 
     from [CustomerShopAndArrivalTime] 
    ) as a 
    where CBCal.[Customer No_]=1 and CBCal.[POS Holiday]=0 and Date='2015-04-15' 
+0

私はすべてのデータを持っていたいと思います。 – Kaja

+0

@kaja昏睡状態に戻すためにはすべての記録が可能です。 –

+0

@Kaja、 'CASE'スカラー式が複数の行を返すときに最終結果に追加の行が必要ですか?それ以外の場合は、Mukeshのように値の区切りリストを返す必要があります。 –