Где я должен поставить пункт AS для налоговой ставки (VAT_RATE) - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу добавить AS VAT_RATE в этот оператор SELECT, но я не знаю, где.

SELECT ROW_NUMBER() OVER(ORDER BY QD.DETAIL_ID) AS No,  
 QD.PRODUCT_ID AS PROD_ID,PM.'+@ProdCode+' AS PROD_CODE,pm.DESCRIPTION AS SHORT_DESC,  
 QD.CORPORATE_PRICE AS Corpo_Price,CONVERT(DECIMAL(18,2),QD.RETAIL_PRICE) AS UNIT_SP,QD.COST_PRICE AS COST_SP,  
 QD.GM,QD.DETAIL_ID,QD.DISC AS Discount,QD.NOTE,

    VAT_RATE=(SELECT VAT_RATE/100 FROM dbo.vat   
    WHERE VAT_ID=(SELECT TOP 1 VAT_ID FROM dbo.product_detail(NOLOCK) WHERE PRODUCT_ID=PM.PROD_ID))

,  
   Img=(SELECT TOP 1 IMAGE_DATA FROM dbo.PRODUCT_IMAGE WHERE PRODUCT_ID=PM.PROD_ID), QD.CostPrice_Percentage  
 FROM dbo.CUSTOMER_QUOTATION_DETAIL(NOLOCK) QD  
 JOIN dbo.product_master(NOLOCK) PM ON PM.PROD_ID=QD.PRODUCT_ID

1 Ответ

0 голосов
/ 10 февраля 2020

В T SQL у вас есть 3 способа назвать ваши столбцы

1) С AS (необязательно в t sql)

SELECT QD.PRODUCT_ID AS PROD_ID
FROM dbo.CUSTOMER_QUOTATION_DETAIL(NOLOCK) QD  

2) Без AS (поскольку это необязательно)

SELECT QD.PRODUCT_ID PROD_ID
FROM dbo.CUSTOMER_QUOTATION_DETAIL(NOLOCK) QD  

3) со знаком равенства, как если бы это была формула

SELECT PROD_ID = QD.PRODUCT_ID 
FROM dbo.CUSTOMER_QUOTATION_DETAIL(NOLOCK) QD  

Специально для вашего запроса именно здесь AS должна go. Вам придется удалить эквивалент и поставить AS в конце подзапроса.

Обратите внимание, что у вас есть другие проблемы с запросами, которые выходят за рамки вашего исходного вопроса. Если у вас возникли проблемы с предварительным исполнением, изучите тему CROSS APPLY / CROSS OUTER JOIN и / или CTE: общее табличное выражение.

SELECT ROW_NUMBER() OVER (
        ORDER BY QD.DETAIL_ID
        ) AS No
    , QD.PRODUCT_ID AS PROD_ID
    --, PM.'+@ProdCode+' AS PROD_CODE
    , @ProdCode AS PROD_CODE
    , pm.DESCRIPTION AS SHORT_DESC
    , QD.CORPORATE_PRICE AS Corpo_Price
    , CONVERT(DECIMAL(18, 2), QD.RETAIL_PRICE) AS UNIT_SP
    , QD.COST_PRICE AS COST_SP
    , QD.GM
    , QD.DETAIL_ID
    , QD.DISC AS Discount
    , QD.NOTE
    , (
        SELECT TOP 1 (VAT_RATE / 100)
        FROM dbo.vat
        WHERE VAT_ID = (
                SELECT TOP 1 VAT_ID
                FROM dbo.product_detail(NOLOCK)
                WHERE PRODUCT_ID = PM.PROD_ID
                )
        ) AS VAT_RATE
    ,   (
        SELECT TOP 1 IMAGE_DATA
        FROM dbo.PRODUCT_IMAGE
        WHERE PRODUCT_ID = PM.PROD_ID
        ) AS Img
    , QD.CostPrice_Percentage
FROM dbo.CUSTOMER_QUOTATION_DETAIL(NOLOCK) QD
JOIN dbo.product_master(NOLOCK) PM
    ON PM.PROD_ID = QD.PRODUCT_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...