GVKun编程网logo

使用最大日期并捕获唯一类型的SQL(sql获取最大日期)

25

针对使用最大日期并捕获唯一类型的SQL和sql获取最大日期这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展android-使日期选择器包含在最大日期中、c#–捕获唯一键冲突的通用方法、jav

针对使用最大日期并捕获唯一类型的SQLsql获取最大日期这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展android-使日期选择器包含在最大日期中、c# – 捕获唯一键冲突的通用方法、java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?、mongodb 日期排序,取表里面最大日期等相关知识,希望可以帮助到你。

本文目录一览:

使用最大日期并捕获唯一类型的SQL(sql获取最大日期)

使用最大日期并捕获唯一类型的SQL(sql获取最大日期)

您可以在case中重复group by表达式。或者,按照我的意愿,使用apply

SELECT pc.packnum,pc.CatID,MAX(b.firstreleasemailed) as Maildate
       v.Type 
FROM pic704current pc JOIN
     CatCov cc 
     ON pc.CatID = cc.Offer AND
        pc.Year = cc.MailYear CROSS APPY
     (VALUES (Case when cc.description like '%Promo%' then 'Promo' 
                   when cc.description like '%Sale%' then 'Insert Sale' 
                   when cc.Description like '%ins%' and cc.Description not like '%sale%' then 'Insert Core' 
                   when cc.description like '%ons%' then 'Onsert'
                   Else 'Core'
              end)
    ) v(type)
WHERE pc.DiscountReasonCode Not in ('LT','UP','OR','ER','IP','WT') AND
      cc.firstreleasemailed <= getdate()
      pc.PackNum = '6762846'
GROUP BY pc.packnum,v.type;

请注意,我还将表别名更改为表名的缩写,因此在读取查询时它们是有意义的。使用有意义的表别名是最佳做法。

编辑:

如果只希望每种类型都使用此选项,则从selectgroup by中删除其他列:

SELECT MAX(b.firstreleasemailed) as Maildate
       v.Type 
FROM pic704current pc JOIN
     CatCov cc 
     ON pc.CatID = cc.Offer AND
        pc.Year = cc.MailYear CROSS APPY
     (VALUES (Case when cc.description like '%Promo%' then 'Promo' 
                   when cc.description like '%Sale%' then 'Insert Sale' 
                   when cc.Description like '%ins%' and cc.Description not like '%sale%' then 'Insert Core' 
                   when cc.description like '%ons%' then 'Onsert'
                   Else 'Core'
              end)
    ) v(type)
WHERE pc.DiscountReasonCode Not in ('LT','WT') AND
      cc.firstreleasemailed <= getdate()
      pc.PackNum = '6762846'
GROUP BY v.type;

android-使日期选择器包含在最大日期中

android-使日期选择器包含在最大日期中

我正在尝试使用Android日期选择器通过两个输入来选择日期范围.开始日期以结束日期为其最大日期,结束日期以开始日期为最小日期.

我想允许将日期选择器设置为相同的日期,以允许选择一天作为范围(因为范围包括在内).

但是,似乎最小日期是包含在内的,而最大日期总是是排除的?有什么办法可以使最大日期包含在内?现在,日期选择器将结束日期设置为可以选择的样式,但不是(我真的很讨厌,因为这使人感到困惑).最终看起来像这样(允许2月28日为最大可选日期-请注意3月1日看起来是可选的,但不是):

Appearance

我在代码中没有做任何特别的事情.只需创建一个DatePickerDialog,然后调用dialog.getDatePicker().setMaxDate(maxDateInMs).

解决方法:

我意识到minday和maxday都包含在内

final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
    }
};

DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, date, myCalendar
        .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
        myCalendar.get(Calendar.DAY_OF_MONTH));

datePickerDialog.getDatePicker().setMinDate(myCalendar.getTimeInMillis());
datePickerDialog.getDatePicker().setMaxDate(myCalendar.getTimeInMillis()+ DateUtils.DAY_IN_MILLIS);

datePickerDialog.show();

enter image description here

c# – 捕获唯一键冲突的通用方法

c# – 捕获唯一键冲突的通用方法

我使用System.Data.Common.DbCommand将新行插入数据库.关键是,这一行已经存在.
try
{
    [...]
    DbCommand insertCommand = [...]
    insertCommand.ExecuteScalar();
    [...]
}
catch (System.Exception exception)
{
   [...]
   throw;
}

如果我将显式捕获System.Data.sqlClient.sqlException,我可以像下面一样评估ErrorNumber.

try
{
  //insertion code
}
catch(sqlException ex)
{
  if(ex.Number == 2627)
  {
     //Violation of primary key. Handle Exception
  }
}

sqlException上下文中的ErrorNumber 2627意味着违反唯一键.见https://msdn.microsoft.com/en-us/library/ms151757%28v=sql.110%29.aspx

到现在为止还挺好.因为我正在使用DbCommand,因此使用不同类型的关系数据库管理系统,我正在寻找一种更通用的方式来捕获这种违反唯一键约束的行为.

感谢帮助.

解决方法

我担心没有内置的通用解决方案.作为一种解决方法,您可以为Execute …创建一个包装器:
public static int ExecuteWithNiceExceptions(this IDbCommand cmd)
{
    try
    {
        return cmd.ExecuteNonQuery();
    }
    catch(sqlException ex)
    {
        if (ex.Number == 2627)
        {
            throw new PrimarykeyviolationException(cmd,ex);
        }
        else
        {
            throw;
        }
    }
    catch (OleDbException ex)
    {
        ... 
    }
    ...
}

这样,您可以将不同的,特定于实现的异常“转换”为通用的,有意义的异常.

java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?

java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?

我找不到一个方法在番石榴转换一个集合(或迭代器/迭代)到一个地图,类似于以下(通配符为清楚省略省略):
public static <T,K,V> Map<K,V> collectionSplitter(Collection<T> source,Function<T,K> kProducer,V> vProducer){
    Map<K,V> map = Maps.newHashMap();
    for(T t : source){
        map.put(kProducer.apply(t),vProducer.apply(t));
    }
    return map;
}

有没有现有的方法呢?最接近的是Splitter.keyvalueSplitter(),如果T是一个String.

解决方法

我最了解的是 Maps.uniqueIndex – 这是关键方面,但不是价值方面…足够近了吗?

你可以使用:

Map<K,V> map = Maps.transformValues(Maps.uniqueIndex(source,kProducer),vProducer);

稍微尴尬,但它会完成工作,我想…

mongodb 日期排序,取表里面最大日期

mongodb 日期排序,取表里面最大日期

tradingDay是实体类字段

Query query = new Query();
        query.with(new Sort(Sort.Direction.DESC, "tradingDay"));
        List<StockQuotation> stockQuotationList = mongoTemplate.find(query,StockQuotation.class);
        System.out.println("----====----" + stockQuotationList.get(0).getTradingDay());

今天关于使用最大日期并捕获唯一类型的SQLsql获取最大日期的讲解已经结束,谢谢您的阅读,如果想了解更多关于android-使日期选择器包含在最大日期中、c# – 捕获唯一键冲突的通用方法、java – 番石榴是否有一种将迭代转换为唯一类型的映射的方法?、mongodb 日期排序,取表里面最大日期的相关知识,请在本站搜索。

本文标签: