Мне нужно изменить существующий запрос, чтобы вернуть записи, созданные после определенной даты - PullRequest
2 голосов
/ 20 марта 2012

У меня есть следующий запрос для возврата всех когда-либо созданных кодов элементов, который работает просто отлично.

SELECT 
    ITM_CD, ITM_NAME, ITM_GROUP_NAME,
    ITM_ATTR01_DESC, ITM_ATTR02_DESC, ITM_ATTR03_DESC,
    ITM_ATTR04_DESC, ITM_ATTR05_DESC, ITM_ATTR06_DESC,
    ITM_ATTR07_DESC, ITM_ATTR08_DESC, ITM_ATTR09_DESC,
    ITM_ATTR10_DESC, ITM_ATTR11_DESC, ITM_ATTR12_DESC,
    ITM_ATTR13_DESC, ITM_ATTR14_DESC, BSP_SELL_PRICE,
    BCP_COST_PRICE, VEN_VENDOR_NAME 
FROM 
    ITEM_DESCRIPTION, 
    BASIC_SP_MST,
    BASIC_CP_MST,
    VENDOR_MST 
WHERE 
    ITM_STATUS='O'AND 
    BSP_ORG_CD='001'AND 
    ITM_CD=BSP_ITEM_CD AND 
    ITM_CD=BCP_VEND_ITEM_CD AND 
    BCP_VEND_CD=VEN_VENDOR_CD AND 
    BCP_ORG_cD='001'

Однако я хочу увидеть коды элементов, созданные после определенной даты, например.16 марта 2012 г.

для этого я пытался

SELECT 
    ITM_CD, ITM_NAME, ITM_GROUP_NAME,
    ITM_ATTR01_DESC, ITM_ATTR02_DESC, ITM_ATTR03_DESC,
    ITM_ATTR04_DESC, ITM_ATTR05_DESC, ITM_ATTR06_DESC,
    ITM_ATTR07_DESC, ITM_ATTR08_DESC, ITM_ATTR09_DESC,
    ITM_ATTR10_DESC, ITM_ATTR11_DESC, ITM_ATTR12_DESC,
    ITM_ATTR13_DESC, ITM_ATTR14_DESC, BSP_SELL_PRICE,
    BCP_COST_PRICE, VEN_VENDOR_NAME 
FROM 
    ITEM_DESCRIPTION, 
    BASIC_SP_MST,
    BASIC_CP_MST,
    VENDOR_MST 
WHERE 
    ITM_STATUS='O'AND 
    BSP_ORG_CD='001'AND 
    ITM_CD=BSP_ITEM_CD AND 
    ITM_CD=BCP_VEND_ITEM_CD AND 
    BCP_VEND_CD=VEN_VENDOR_CD AND 
    BCP_ORG_cD='001' AND 
    LAST_UPDATED_DATE > '16-MARCH-2012'

Но получил ошибку

Сообщение 209, Уровень 16, Состояние 1, Строка 3 Неоднозначное имя столбца'LAST_UPDATED_DATE'.

Что я делаю неправильно и что я могу сделать, чтобы исправить это.

Я использую MS SQL Server Management Studio Express

Как выПонимаешь, я даже не новичок, поэтому спасибо за то, что терпишь меня.

Буду очень признателен за любую помощь.

Спасибо, RItin

Ответы [ 3 ]

4 голосов
/ 20 марта 2012

Это означает, что LAST_UPDATED_DATE - это имя столбца в 2 таблицах, и SQL Engine не знает, какой из них выбрать.

Вы можете указать ядру, добавив имя таблицы следующим образом:

table_name.LAST_UPDATED_DATE

Ваш запрос:

SELECT ITM_CD,
   ITM_NAME,
   ITM_GROUP_NAME,
   ITM_ATTR01_DESC,
   ITM_ATTR02_DESC,
   ITM_ATTR03_DESC,
   ITM_ATTR04_DESC,
   ITM_ATTR05_DESC,
   ITM_ATTR06_DESC,
   ITM_ATTR07_DESC,
   ITM_ATTR08_DESC,
   ITM_ATTR09_DESC,
   ITM_ATTR10_DESC,
   ITM_ATTR11_DESC,
   ITM_ATTR12_DESC,
   ITM_ATTR13_DESC,
   ITM_ATTR14_DESC,
   BSP_SELL_PRICE,
   BCP_COST_PRICE,
   VEN_VENDOR_NAME 
FROM ITEM_DESCRIPTION,BASIC_SP_MST,BASIC_CP_MST,VENDOR_MST 
WHERE ITM_STATUS='O'
  AND BSP_ORG_CD='001'
  AND ITM_CD=BSP_ITEM_CD 
  AND ITM_CD=BCP_VEND_ITEM_CD 
  AND BCP_VEND_CD=VEN_VENDOR_CD 
  AND BCP_ORG_cD='001' 
  AND tablename.LAST_UPDATED_DATE > '16-MARCH-2012'  <-- here is a table name needed for LAST_UPDATED_DATE

Обновление: кстати, я думаю, что использование строки 16-MARCH-2012 не будет работать.Попробуйте вместо этого 16-03-2012 для сравнения дат.

0 голосов
/ 20 марта 2012

Это происходит, когда столбец с одинаковым именем присутствует более чем в одной таблице .... Как видно из сценария, LAST_UPDATED_DATE присутствует в нескольких таблицах ..... Таким образом, укажите имя таблицы вместе с именем столбца .........

table_name.LAST_UPDATED_DATE
0 голосов
/ 20 марта 2012

Сообщение означает, что более одной таблицы, из которой вы выбираете данные, содержит столбец LAST_UPDATED_DATE.Добавить префикс перед именем столбца

...