我还没有发现一个与我的问题类似的问题,可能是因为我甚至不知道如何问这个问题,但是我有这个表,其中有几个列,其中很多是char(4)类型的。
该问题的列具有如下值:
|PRODUCT_CATEGORIES06|
|--------------------|
|FNCY|
| 2|
| 3|
|GRN |
|STD |
| |
|COMB|
| 1|
|CHO |所以,当我这么做的时候:小提琴
SELECT RPO.REFERENCE_NUMBER, PM.PRODUCT_CATEGORIES06
FROM Table1 RPO
INNER JOIN Table2 PM ON PM.PRODUCT = RPO.PRODUCT
WHERE RPO.REFERENCE_NUMBER = '00012122'
GROUP BY RPO.REFERENCE_NUMBER, PM.COMMODITY, PM.PRODUCT_CATEGORIES01, PM.PRODUCT_CATEGORIES06我得到:
|REFERENCE_NUMBER |PRODUCT_CATEGORIES06|
|-------------------|--------------------|
|00012122 |1 |
|00012122 |3 |
|00012122 |GRN |但当我这么做的时候:小提琴
SELECT RPO.REFERENCE_NUMBER, PM.PRODUCT_CATEGORIES06
FROM Table1 RPO
INNER JOIN Table2 PM ON PM.PRODUCT = RPO.PRODUCT
WHERE PM.PRODUCT_CATEGORIES06 = 1
AND RPO.REFERENCE_NUMBER = '00012122'
GROUP BY RPO.REFERENCE_NUMBER, PM.COMMODITY, PM.PRODUCT_CATEGORIES01, PM.PRODUCT_CATEGORIES06它尝试将GRN转换为int并抛出此错误:
将varchar值“GRN”转换为数据类型int时,转换失败。
我试过使用CHAR函数,但我只是在黑暗中拍摄,我真的不知道该怎么做。
我知道设计是不好的,买我没有做这个,而且,我不能改变它。
如何修复查询?
编辑添加了小提琴链接
或尝试:
CREATE TABLE [dbo].[Table1](
[REFERENCE_NUMBER] [char](8) NOT NULL,
[PRODUCT] [char](12) NOT NULL,
)
CREATE TABLE [Table2](
[PRODUCT] [char](12) NOT NULL,
[PRODUCT_CATEGORIES06] [char](4) NOT NULL
)
INSERT INTO Table1 (REFERENCE_NUMBER, PRODUCT) VALUES ('REF1','PRODUCT1')
INSERT INTO Table1 (REFERENCE_NUMBER, PRODUCT) VALUES ('REF1','PRODUCT2')
INSERT INTO Table1 (REFERENCE_NUMBER, PRODUCT) VALUES ('REF1','PRODUCT3')
INSERT INTO Table2 (PRODUCT, PRODUCT_CATEGORIES06) VALUES ('PRODUCT1',1)
INSERT INTO Table2 (PRODUCT, PRODUCT_CATEGORIES06) VALUES ('PRODUCT2',2)
INSERT INTO Table2 (PRODUCT, PRODUCT_CATEGORIES06) VALUES ('PRODUCT3','GRN')
--works without product category on where
SELECT RPO.REFERENCE_NUMBER, PM.PRODUCT_CATEGORIES06
FROM Table1 RPO
INNER JOIN Table2 PM ON PM.PRODUCT = RPO.PRODUCT
WHERE RPO.REFERENCE_NUMBER = 'REF1'
GROUP BY RPO.REFERENCE_NUMBER, PM.PRODUCT_CATEGORIES06
-- doesn't work, this error I'm trying to find a solution
SELECT RPO.REFERENCE_NUMBER, PM.PRODUCT_CATEGORIES06
FROM Table1 RPO
INNER JOIN Table2 PM ON PM.PRODUCT = RPO.PRODUCT
WHERE PM.PRODUCT_CATEGORIES06 = 1
AND RPO.REFERENCE_NUMBER = 'REF1'
GROUP BY RPO.REFERENCE_NUMBER, PM.PRODUCT_CATEGORIES06发布于 2021-09-14 04:29:05
这条线
PM.PRODUCT_CATEGORIES06 = 1 使Server尝试将所有值转换为int,因为未引用的1是int。将其更正为字符串,因为您的列数据是字符串:
PM.PRODUCT_CATEGORIES06 = '1' 而且它是有效的。
https://stackoverflow.com/questions/69171648
复制相似问题