kashifjaat Ответов: 1

Группировка в SQL хранимых процедур


Я хочу только те строки, где AucNumber и самая высокая цена предложения с датой и временем, что будет изменено в моем магазине rocedure, я хочу только AucNumber, где цена самая высокая

Я хочу такой результат
1 Ле-16 2500 500000000 2016-09-22 12:13:13.000
2 Ле-16 2000 60000 2016-09-20 15:40:16.000
50000 LE-16 2000 NULL NULL
800000 LE-16 2000 NULL NULL


SELECT AuctionsSelectedNumber.AucNumber,
       AuctionsSelectedNumber.Auc_Series,AuctionsSelectedNumber.Price,
	   AuctionsSelectedNumber.BiddingPrice,MAX(AuctionsSelectedNumber.BiddingDateTime)
FROM   AuctionsSelectedNumber
GROUP  BY AucNumber,IsNonAction,Auc_Series,Price,BiddingPrice


РЕЗУЛЬТАТ

AucNumber Auc_Series	Price	BiddingPrice	(No column name)
1	LE-16	1500	800000	2016-09-20 20:59:49.000
1	LE-16	2500	NULL	NULL
1	LE-16	2500	200000	NULL
1	LE-16	2500	90000000	NULL
1	LE-16	2500	500000000	2016-09-22 12:13:13.000
2	LE-16	2000	60000	2016-09-20 15:40:16.000
2	LE-16	3000	NULL	NULL
50000	LE-16	2000	NULL	NULL
800000	LE-16	2000	NULL	NULL


Что я уже пробовал:

Мне нужны только те аукционные номера, где цена самая высокая

OriginalGriff

Покажите нам, что вы хотите получить, а также то, что вы получаете - из этого не очевидно, что вы ожидаете выбрать.
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

kashifjaat

Я хочу получить

1 Ле-16 2500 500000000 2016-09-22 12:13:13.000
2 LE-16 3000 NULL NULL
50000 LE-16 2000 NULL NULL
800000 LE-16 2000 NULL NULL

OriginalGriff

А как выглядят входные данные?
Похоже, у вас есть два совершенно разных выходных формата...

OriginalGriff

Не обращайте на это внимания - я предполагаю, что 50000 и 800000-это аукционные номера.

kashifjaat

Да дорогой 50000 и 800000 это аукционные номера

kashifjaat

Мне нужен только номер аукциона, где цена предложения самая высокая или Дата-Время самая высокая

1 Ответов

Рейтинг:
9

OriginalGriff

Начните с просмотра группы по-у вас там слишком много предложений, и именно поэтому вы получаете больше строк, чем хотите. (Это может помочь вам понять, почему: SQL GROUP By и ошибка" имя столбца недопустимо в списке выбора, потому что..."[^])

Итак, начните с более простой группы по:

SELECT AucNumber, MAX(BiddingPrice) AS MaxBP
FROM AuctionsSelectedNumber
GROUP BY AucNumber
Это не вернет вам всю информацию, которую вы хотите, но это должно привести его вниз только те строки, которые вы хотите.
Затем используйте соединение, чтобы объединить его с остальными данными.:
SELECT a.* FROM AuctionsSelectedNumber
JOIN (SELECT AucNumber, MAX(BiddingPrice) AS MaxBP
      FROM AuctionsSelectedNumber
      GROUP BY AucNumber) b
ON a.AucNumber = b.AucNumber AND a.MaxBP = b.MaxBP

У меня нет ваших тестовых данных, поэтому я не могу их проверить, но это должно сделать то, что вы хотите.
Если это не так, покажите свои входные и выходные данные и объясните, где выходные данные неверны.


kashifjaat

Спасибо За Его Работу

OriginalGriff

Пожалуйста!

Maciej Los

Я понятия не имею, кто проголосовал за 2... Мои 5!

kashifjaat

хаххаха... Как я могу измениться сейчас

Maciej Los

Простой... Используйте систему голосования-нажмите на звезду (где 1 звезда-самая низкая, а 5 звезд-самая высокая ставка) в правом верхнем углу ответа. 3 звезды означают-нейтральное голосование.

kashifjaat

Оки Дорогой

kashifjaat

Как я могу сделать этот запрос с помощью LINQ в c#, используя Entity Frame Work.??

Выберите a.* из AuctionsSelectedNumber
JOIN (SELECT AucNumber, MAX (BiddingPrice) AS MaxBP
С Аукционавыбранный номер
Группа по AucNumber) b
на.AucNumber = б.AucNumber и.MaxBP = б.MaxBP