sql - 我应该把税率的 AS 条款 (VAT_RATE) 放在哪里
问题描述
我想在这个 SELECT 语句中添加一个 AS VAT_RATE,但我不知道在哪里。
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
解决方案
在 TSQL 中,你有 3 种方式来命名你的列
1) 使用 AS(在 tsql 中可选)
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 应该去的地方。您必须删除等于并将 AS 放在子查询的末尾。
请注意,您对超出原始问题范围的查询还有其他各种问题。如果您遇到性能问题,请调查 CROSS APPLY / CROSS OUTER JOIN 和/或 CTE : Common Table Expression。
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
推荐阅读
- sql - 如何在存储过程中拆分参数
- spring-boot - 通过命令行覆盖spring application.properties
- android - Android MathView 溢出屏幕宽度
- python - RabbitMq 与 WSL 和 python
- java - 如何将数组列表值返回到单独的数组中?
- css - CSS网格列忽略自动添加的元素
- java - 如何在 ubuntu 上设置系统变量并在 scala 中检索它
- asp.net - 为什么我的 web api 将 get 请求映射到我的 api 控制器中的第二个方法而不是第一个?
- java - 这是测试 3 个值是否相等的有效方法吗?
- pyspark - 获取sparkcontext时的pyspark java网关问题