1

我有一个带有以下输出的查询

SELECT  BIN_NAME,ROW_NUMBER() Over(Order by BIN_NAME) C
FROM USR_BINS_ITEMS I 
LEFT JOIN USR_BINS B ON I.BIN_COD=B.BIN_COD 
WHERE I.LOC_ID='6' 
And I.ITEM_NO = '364001' 

输出是....

Bin     c
--------------
E1-03   1    
E1-08   2    
E2-01   3

但是我希望我的输出是

E1-03   ,  3

这意味着,仅选择 FIRST Row Bin Value 但也显示总行数(或 C 列的最大值)。我正在使用 MS SQL Server 2008。

4

2 回答 2

3

你只是想要:

SELECT MIN(BIN_NAME) as BIN_NAME, COUNT(*) AS BIN_COUNT
FROM ...
于 2012-09-13T21:45:26.243 回答
1

试试这个:

SELECT TOP 1 BIN_NAME, X.TOTAL
FROM USR_BINS_ITEMS I

LEFT JOIN USR_BINS B
ON I.BIN_COD = B.BIN_COD

INNER JOIN (
    SELECT COUNT(*) AS TOTAL
    FROM USER_BINS_ITEMS I2
    WHERE I2.LOC_ID = '6' And I2.ITEM_NO = '364001'
) X ON TRUE

WHERE I.LOC_ID = '6' And I.ITEM_NO = '364001';

它要求执行两次搜索,但它应该比使用子查询SELECT BIN_NAME, (SELECT COUNT(*) ...) AS TOTAL ...

无论哪种方式,此查询都应该执行得很好并满足您的要求。

请注意,如果没有ORDER BY子句,数据库引擎可以自由地将它希望从结果集中返回给您的任何行。ORDER BY如果要获取某些特定行,请添加子句。

于 2012-09-13T21:20:19.457 回答