Чтобы найти наиболее часто используемое значение в таблице в SQL - PullRequest
0 голосов
/ 07 июня 2018
CREATE TABLE Temp_Account
(
   ID Int IDENTITY(1,1),
   AccountNo Varchar(500)
)

.......................................

INSERT INTO Temp_Account
SELECT 'AE000111'
UNION ALL
SELECT 'AE000112'
UNION ALL
SELECT 'AE000113'
UNION ALL
SELECT 'AE000114'
UNION ALL
SELECT 'AE000115'

........................................

 CREATE PROCEDURE Temp_AccountProc
(
   @AccountNo    Varchar(500)
)
AS
BEGIN

   SELECT ID
   FROM   Temp_Account
   WHERE  AccountNo     =      @AccountNo

  END


   EXEC Temp_AccountProc 'AE000111'

   EXEC Temp_AccountProc 'AE000112'

   EXEC Temp_AccountProc 'AE000113'

   EXEC Temp_AccountProc 'AE000111'

   EXEC Temp_AccountProc 'AE000111'

   EXEC Temp_AccountProc 'AE000112'

Я хочу знать наиболее часто используемое значение в таблице.Есть ли DMV или какой-либо метод, чтобы найти данный вывод?

 ------------------------------------
    AccountNo          UsedCount
  ------------------------------------

      AE000111            3

      AE000112            2

      AE000113            1

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Попробуйте это:

  1. Добавить столбец [UsedCount]
  2. Когда процедура вызова установлена ​​[UsedCount] + 1

CREATE TABLE Temp_Account
(
   ID Int IDENTITY(1,1),
   AccountNo Varchar(500),
   [UsedCount]  int
)
INSERT INTO Temp_Account
SELECT 'AE000111',0
UNION ALL
SELECT 'AE000112',0
UNION ALL
SELECT 'AE000113',0
UNION ALL
SELECT 'AE000114',0
UNION ALL
SELECT 'AE000115',0
;

CREATE PROCEDURE Temp_AccountProc
(
   @AccountNo    Varchar(500)
)
AS
BEGIN

   SELECT ID
   FROM   Temp_Account
   WHERE  AccountNo     =      @AccountNo

   update Temp_Account
   set [UsedCount] = [UsedCount] +1
   WHERE  AccountNo     =      @AccountNo

END

   EXEC Temp_AccountProc 'AE000111';
   EXEC Temp_AccountProc 'AE000112';
   EXEC Temp_AccountProc 'AE000113';
   EXEC Temp_AccountProc 'AE000111';
   EXEC Temp_AccountProc 'AE000111';
   EXEC Temp_AccountProc 'AE000112';

   select * from Temp_Account
   where [UsedCount] > 0;

Результат:

| ID | AccountNo | UsedCount|
|----|-----------|-------------|
|  1 |  AE000111 |           3 |
|  2 |  AE000112 |           2 |
|  3 |  AE000113 |           1 |

Демонстрационная ссылка SQL Fiddle

0 голосов
/ 07 июня 2018
  1. добавьте новый столбец в вашу таблицу или создайте другую временную таблицу со столбцами, такими как UsedCount и AccountNo,
  2. в вашей процедуре, если когда-либо выбран номер учетной записи, выберите для этого значение столбца счетчика использования.номер счета тоже
  3. увеличить используемое количество
  4. выполнить инструкцию по обновлению, чтобы обновить используемое количество для этого AccountNo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...