Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 包含带有干净select语句的联合的视图_Sql_Sql Server - Fatal编程技术网

Sql 包含带有干净select语句的联合的视图

Sql 包含带有干净select语句的联合的视图,sql,sql-server,Sql,Sql Server,由于对SQL非常陌生,我正在努力扩展下面的查询,因为我在下面的查询中需要另一个条件,所以我决定尝试在语句的ELSE部分使用另一个CASE。 我将通过以下声明: /* AZURE_COMMENT_START */ IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = 'Caring') CREATE DATABASE [Caring] GO USE [Caring] GO /* AZURE_COMMENT_END */ IF

由于对SQL非常陌生,我正在努力扩展下面的查询,因为我在下面的查询中需要另一个条件,所以我决定尝试在语句的ELSE部分使用另一个CASE。 我将通过以下声明:

 /* AZURE_COMMENT_START */
IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = 'Caring')
    CREATE DATABASE [Caring]
GO

USE [Caring]
GO
/* AZURE_COMMENT_END */


IF EXISTS (SELECT 1 FROM sys.views WHERE [name] = 'tlv_plannings')
    DROP VIEW [tlv_plannings]
GO

CREATE VIEW tlv_plannings AS 
(

    SELECT
    AanvragenPlanningBase.[Id] AS [Id],
    2 AS [Weekday],
    [FrequentieMao] AS [FrequentieMorning],
    [FrequentieMam] AS [FrequentieAfternoon],
    AanvragenPlanningBase.[Startdate] AS [Startdate],
    ISNULL(AanvragenPlanningBase.[Enddate], '9999-12-31') AS [Enddate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.MondayMorning ELSE ov2.MondayMorning END AS [MorningTime], 
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.MondayAfternoon ELSE ov2.MondayAfternoon END AS [AfternoonTime], 
    AanvragenPlanningBase.MondayMorning AS [PlanningMorning],
    AanvragenPlanningBase.MondayAfternoon AS [PlanningAfternoon],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.Startdate ELSE ov2.Startdate END AS [OpvangStartdate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ISNULL(ov1.Enddate, '9999-12-31') ELSE  ISNULL(ov2.Enddate, '9999-12-31') END AS [OpvangEnddate]
    FROM AanvragenPlanningBase
    LEFT OUTER JOIN OnderhoudKdvOpvangtijdBase kov on AanvragenPlanningBase.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov1 ON ov1.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudBSoOpvangtijdBase bov on AanvragenPlanningBase.BSOOpvangtijdId = bov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov2 ON ov2.BsoOpvangtijdId = bov.Id
    UNION 
    SELECT
    AanvragenPlanningBase.[Id] AS [Id],
    3 AS [Weekday],
    [FrequentieDio] AS [FrequentieMorning],
    [FrequentieDim] AS [FrequentieAfternoon],
    AanvragenPlanningBase.[Startdate] AS [Startdate],
    ISNULL(AanvragenPlanningBase.[Enddate], '9999-12-31') AS [Enddate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.TuesdayMorning ELSE ov2.TuesdayMorning END AS [MorningTime], 
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.TuesdayAfternoon ELSE ov2.TuesdayAfternoon END AS [AfternoonTime], 
    AanvragenPlanningBase.TuesdayMorning AS [PlanningMorning],
    AanvragenPlanningBase.TuesdayAfternoon AS [PlanningAfternoon],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.Startdate ELSE ov2.Startdate END AS [OpvangStartdate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ISNULL(ov1.Enddate, '9999-12-31') ELSE  ISNULL(ov2.Enddate, '9999-12-31') END AS [OpvangEnddate]
    FROM AanvragenPlanningBase
    LEFT OUTER JOIN OnderhoudKdvOpvangtijdBase kov on AanvragenPlanningBase.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov1 ON ov1.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudBSoOpvangtijdBase bov on AanvragenPlanningBase.BSOOpvangtijdId = bov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov2 ON ov2.BsoOpvangtijdId = bov.Id
    UNION 
    SELECT
    AanvragenPlanningBase.[Id] AS [Id],
    4 AS [Weekday],
    [FrequentieWoo] AS [FrequentieMorning],
    [FrequentieWom] AS [FrequentieAfternoon],
    AanvragenPlanningBase.[Startdate] AS [Startdate],
    ISNULL(AanvragenPlanningBase.[Enddate], '9999-12-31') AS [Enddate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.WednesdayMorning ELSE ov2.WednesdayMorning END AS [MorningTime], 
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.WednesdayAfternoon ELSE ov2.WednesdayAfternoon END AS [AfternoonTime], 
    AanvragenPlanningBase.WednesdayMorning AS [PlanningMorning],
    AanvragenPlanningBase.WednesdayAfternoon AS [PlanningAfternoon],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.Startdate ELSE ov2.Startdate END AS [OpvangStartdate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ISNULL(ov1.Enddate, '9999-12-31') ELSE  ISNULL(ov2.Enddate, '9999-12-31') END AS [OpvangEnddate]
    FROM AanvragenPlanningBase
    LEFT OUTER JOIN OnderhoudKdvOpvangtijdBase kov on AanvragenPlanningBase.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov1 ON ov1.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudBSoOpvangtijdBase bov on AanvragenPlanningBase.BSOOpvangtijdId = bov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov2 ON ov2.BsoOpvangtijdId = bov.Id
    UNION 
    SELECT
    AanvragenPlanningBase.[Id] AS [Id],
    5 AS [Weekday],
    [FrequentieDoo] AS [FrequentieMorning],
    [FrequentieDom] AS [FrequentieAfternoon],
    AanvragenPlanningBase.[Startdate] AS [Startdate],
    ISNULL(AanvragenPlanningBase.[Enddate], '9999-12-31') AS [Enddate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.ThursdayMorning ELSE ov2.ThursdayMorning END AS [MorningTime], 
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.ThursdayAfternoon ELSE ov2.ThursdayAfternoon END AS [AfternoonTime], 
    AanvragenPlanningBase.ThursdayMorning AS [PlanningMorning],
    AanvragenPlanningBase.ThursdayAfternoon AS [PlanningAfternoon],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.Startdate ELSE ov2.Startdate END AS [OpvangStartdate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ISNULL(ov1.Enddate, '9999-12-31') ELSE  ISNULL(ov2.Enddate, '9999-12-31') END AS [OpvangEnddate]
    FROM AanvragenPlanningBase
    LEFT OUTER JOIN OnderhoudKdvOpvangtijdBase kov on AanvragenPlanningBase.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov1 ON ov1.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudBSoOpvangtijdBase bov on AanvragenPlanningBase.BSOOpvangtijdId = bov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov2 ON ov2.BsoOpvangtijdId = bov.Id
    UNION 
    SELECT
    AanvragenPlanningBase.[Id] AS [Id],
    6 AS [Weekday],
    [FrequentieVro] AS [FrequentieMorning],
    [FrequentieVrm] AS [FrequentieAfternoon],
    AanvragenPlanningBase.[Startdate] AS [Startdate],
    ISNULL(AanvragenPlanningBase.[Enddate], '9999-12-31') AS [Enddate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.FridayMorning ELSE ov2.FridayMorning END AS [MorningTime], 
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.FridayAfternoon ELSE ov2.FridayAfternoon END AS [AfternoonTime], 
    AanvragenPlanningBase.MondayMorning AS [PlanningMorning],
    AanvragenPlanningBase.MondayAfternoon AS [PlanningAfternoon],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ov1.Startdate ELSE ov2.Startdate END AS [OpvangStartdate],
    CASE WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL THEN ISNULL(ov1.Enddate, '9999-12-31') ELSE  ISNULL(ov2.Enddate, '9999-12-31') END AS [OpvangEnddate]
    FROM AanvragenPlanningBase
    LEFT OUTER JOIN OnderhoudKdvOpvangtijdBase kov on AanvragenPlanningBase.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov1 ON ov1.KdvOpvangtijdId = kov.Id
    LEFT OUTER JOIN OnderhoudBSoOpvangtijdBase bov on AanvragenPlanningBase.BSOOpvangtijdId = bov.Id
    LEFT OUTER JOIN OnderhoudOpvangtijdBase ov2 ON ov2.BsoOpvangtijdId = bov.Id
)
因此,问题出现在以下部分


现在我想在这里输入另一个case select,但是语法方面有很多问题(请原谅),因为我想匹配这个查询中的列数。我如何才能以干净的方式正确地执行此操作

如果您的意思是您有几种可能性使用
[OpvangEnddate]
,那么您可能想要这样的东西。我添加了回车,以明确
CASE…END
结构可以有许多子句:

CASE 
    WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL 
      THEN ISNULL(ov1.Enddate, '9999-12-31') 
    WHEN 'something else' = 'is true'
      THEN 'some other value'
    ELSE  
      ISNULL(ov2.Enddate, '9999-12-31') 
END AS [OpvangEnddate]

9999-12-31
?这不完全符合Y10k……我无法从问题中看出问题所在。您是否收到错误或意外数据?@Marc抱歉,这是一个我必须调整的查询,所以不是我的代码,而是您的right@Karl我期待着一个错误(也得到它),但我发现所有的案例选择有点混乱和丑陋
CASE 
    WHEN AanvragenPlanningBase.KdvOpvangtijdId IS NOT NULL 
      THEN ISNULL(ov1.Enddate, '9999-12-31') 
    WHEN 'something else' = 'is true'
      THEN 'some other value'
    ELSE  
      ISNULL(ov2.Enddate, '9999-12-31') 
END AS [OpvangEnddate]