【问题标题】:How to combine 2 sql queries to one query in SQL Server?如何在 SQL Server 中将 2 个 sql 查询合并为一个查询?
【发布时间】:2015-07-22 12:50:58
【问题描述】:

我对必须在 SQL Server 中添加的 MS Access 中的两个 SQL 查询感到有些困惑。

我想写一个存储过程,但是不知道如何组合这两个sql查询。

这是第一个MaxMonthDate

SELECT Max(Day([Datum])) AS DayMax, 
       Month([Datum]) AS MonthMax, 
       Year([Datum]) AS YearMax, 
       DateSerial([YearMax],[MonthMax],[DayMax]) AS DatumMax
FROM DS
WHERE (((DS.Datum)>=[Formulare]![Hauptmenü]![Startdatum] And (DS.Datum)<=[Formulare]![Hauptmenü]![Enddatum]))
GROUP BY Month([Datum]), Year([Datum]);

第二个查询MaxMonthVal

SELECT DS.*
FROM MaxMonthDate INNER JOIN DS ON MaxMonthDate.DatumMax = DS.Datum
ORDER BY DS.Datum;

谁能告诉我如何将这些组合到一个查询中?

【问题讨论】:

  • 如果返回列应该相同,那么您可以使用“union all”
  • 请说明所需的输出是什么。您可以联合/联合所有来组合两个查询的输出,但它们应该返回相同的列。
  • @AbhayChauhan 第一个查询返回该月的最后一天,例如当我尝试 @from = '2014-01-01', @to = '2014-05-31' 然后它是返回2014-01-312014-02-282014-03-31...等等。第二个查询返回这几天的所有列。
  • @MukeshKalgude 我该如何结合这个?可以举个例子吗?
  • @yuro 第二个查询返回的数据是需要的输出吗?如果是这种情况,那么您可以使用第一个查询作为子查询来过滤表 DS 中的数据。让我知道这是否是您要查找的内容,以便我提供示例查询。

标签: sql sql-server ms-access stored-procedures


【解决方案1】:

您可以使用子查询来组合您的查询。请参考以下查询:

    SELECT DS.*
    FROM DS where DS.Datum in
    (Select DatumMax from 
    (SELECT Max(Day([Datum])) AS DayMax, 
           Month([Datum]) AS MonthMax, 
           Year([Datum]) AS YearMax, 
           DateSerial([YearMax],[MonthMax],[DayMax]) AS DatumMax
    FROM DS
    WHERE (((DS.Datum)>=[Formulare]![Hauptmenü]![Startdatum] And (DS.Datum)<=[Formulare]![Hauptmenü]![Enddatum]))
    GROUP BY Month([Datum]), Year([Datum]))a
    )
    ORDER BY DS.Datum;

如果能帮助您解决问题,请将其标记为答案。

谢谢!!

【讨论】:

  • 问题是我必须使用 SQL Server 而 SQL Server TSQL 不包含 DateSerial
  • 在 T-SQL 中使用以下代码代替日期序列: DATEADD(day, DayMax-1, DATEADD(month, MonthMax-1, DATEADD(year, YearMax-1900, 0) ) )
  • @yuro 你能把日期序列函数转换成 T-SQL 查询吗?
  • TSQL 中的 DateSerial 这篇文章可能会有所帮助 - stackoverflow.com/questions/3355015/date-serial-in-sql
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多