0

我正在编写一个 foxpro sql & 需要将三个不同表中的三个日期列组合成一个新的日期列。例如,如果三个表是 A、B 和 C,并且日期列是 Adate、Bdate 和 Cdate,我如何将它们作为不同且单独的日期组合到名为 TransDate 的列中并在 SQL 中?如果可能的话,我会很感激代码示例,因为我对此很陌生

4

2 回答 2

0

新的答案选项...根据您关于购买、库存调整或销售的评论,并且没有任何您希望看到的清晰描述或输出样本,我认为您想要类似...

表 A = 采购 表 B = 调整 表 C = 销售

不确定我是否同意这种结构,但只能从简短的描述中暗示。我认为您想要更多的“分类帐”样式摘要

购买 1 月 10 日 购买 1 月 15 日 销售 2 月 2 日 调整 2 月 10 日 购买 2 月 15 日 等等...

然后,我会做一个 UNION

select  
      "Purchase   " as TransType,
      T1.ADate as TransDate
   from
      YourTableA T1
   where 
      T1.IDKey = ?SomeValueSuchAsAccount
   order by
      TransDate
UNION ALL
select
      "Adjustments" as TransType,
      T2.BDate as TransDate
   from
       YourTableB T2
   where 
      T2.IDKey = ?SomeValueSuchAsAccount
UNION ALL
select
      "Sales      " as TransType,
      T3.CDate as TransDate
   from
       YourTableB T3
   where 
      T3.IDKey = ?SomeValueSuchAsAccount

如果我的假设不正确,请为我自己和其他人提供更多此类事务、数据布局等的样本……不需要实时数据,也不需要完整的表结构或实际表名。但是,我们确实需要更多的合作,特别是如果您将来需要帮助,否则,人们可能会拒绝您的请求。

于 2010-05-02T23:51:02.347 回答
0

是的,需要更多的日期说明。您不能将 3 合并为 1...或者您的意思是您想要 1 个结果行来显示与给定交易相关的所有 3 个日期?或者,您希望(例如)3 个日期中最早的一个来确定第一个交易日期的开始时间?无论如何,请在您的问题中澄清,但在不了解更多表格结构的情况下,这里有一个可能的选择......另外,如果您直接从 foxpro (VFP) 表格中进行操作,您显然必须添加这 ”;” 作为以下语句的续行

select 
      T1.ADate,
      T2.BDate,
      T3.CDate,
      iif( T1.ADate > T2.BDate and T1.ADate > T3.CDate, T1.ADate,
           iif( T2.BDate > T1.ADate and T2.BDate > T3.CDate, 
               T2.BDate, T3.CDate ) ) as LargestDate,
      iif( T1.ADate < T2.BDate and T1.ADate < T3.CDate, T1.ADate,
           iif( T2.BDate < T1.ADate and T2.BDate < T3.CDate, 
               T2.BDate, T3.CDate ) ) as EarliestDate
   from 
      YourTableA T1,
      YourTableB T2,
      YourTableC T3
   where 
          T1.IDKey = T2.IDKey
      AND T1.IDKey = T3.IDKey
   into 
      cursor C_SomeTestResultCursor

同样,我不知道您的三个表之间共有的“键”是什么,因此您显然必须根据该元素是什么来调整查询。

于 2010-04-30T13:39:15.670 回答