SQL从max(日期)中选择一行

时间:2018-09-05 23:48:20

标签: sql sql-server database

我一直在尝试获取一些具体信息,但无法获取。

SELECT 
    idStyle, 
    idStyleDtl, 
    costPrice, 
    MAX(createDt) created, 
    idCustomer 
FROM INVOICE_DTL
GROUP BY 
    idStyle, idStyleDtl,costPrice, idCustomer
ORDER BY 
    idStyle, idCustomer

这是我的查询和

Result

这是结果。 我期望突出显示的部分会合并,并且只显示created:2017-02-01 12:38:31.597costPrice:11.50的一行(因为它与MAX(createDt)在同一行),因为它们具有相同的idStyleidStyleDtlidCustomer。我以为可能是MAX(costPrice),但它只是返回了更高的costPrice,而不是与MAX(createDt)在同一行中的那个。

当相同的MAX(createDt)idStyleidStyleDtl相同时,我想获得整行的idCustomer结果。

即使是很小的建议也将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

您可以尝试将ROW_NUMBER窗口功能结合使用,以按idStyleidStyleDtlidCustomer列和按createDt子查询中的DESC。

然后获取rn = 1数据,这表示最大日期。

SELECT * FROM (
    SELECT 
        idStyle, 
        idStyleDtl, 
        costPrice, 
        createDt, 
        idCustomer,
        ROW_NUMBER() OVER(PARTITION BY idStyle, idStyleDtl, idCustomer ORDER BY createDt DESC) rn
    FROM INVOICE_DTL
) t1
where rn = 1
ORDER BY 
    idStyle, idCustomer

答案 1 :(得分:0)

最有效的方法通常是相关子查询:

do {
    $uniq = rand(1,999999);
    $query ="select count(*) count from Users where user_id = " . $uniq;
    //execute and do a fetch 
} while ($row['count'] > 0);

尤其是,这可以利用// CreateGame.js onLocationSelect(location) { this.setState({ selectedLocation: location }); console.log(location); } render() { return ( <h3>Location</h3> <div className="create-game-inputs"> <DropDownSearch fetchYelpBusinesses={yelpSearch} location={this.state.location} yelpSearchResults={this.props.yelpSearchResults} onLocationSelect={this.onLocationSelect} /> </div> ) } // DropDownSearch.js renderSearchResults(results) { return results.map(item => { return ( <li name="dds-item" key={item.id} onClick={() => this.props.onLocationSelect(item)} > <div className="dds-item-img"> <img src={item.image_url} alt={item.name} /> </div> <div className="dds-item-info"> <div className="dds-item-name">{item.name}</div> <div className="dds-item-address"> {item.location.address1},{item.location.city}, {item.location.state} </div> </div> </li> ); }); } render() { return ( <div className="dds-search-wrapper"> <input name="searchTerm" type="search" value={this.state.searchTerm} onChange={this.onSearchChange} onFocus={this.onSearchFocus} onBlur={this.onSearchBlur} autoComplete="off" /> {this.props.yelpSearchResults && this.state.listOpen && ( <ul className="dds-list"> {this.renderSearchResults( this.props.yelpSearchResults )} </ul> )} <input name="location" type="search" value={this.state.location} onChange={this.onLocationChange} /> </div> ); } 上的索引。