내 문제는 실제로 여러 테이블을 가지고 있으며 ARV1
에 대해 하나의 열을 생성하기 위해 두 개의 case
문을 사용하고 ICA1
에 대해 하나의 결과를 생성해야합니다. 같은 줄에. case
을 사용할 때 두 개의 열을 생성하지만 값은 두 개의 행으로 표시됩니다. 내가 뭘 놓치고 있니?두 개 이상의 동일한 쿼리에서 하나 이상의 행을 생성하는 경우
나는 인보이스 표 OINV가 있고 지주 세금이있는 표 INV5 표가 있습니다. 다른 열에 보유 세금이있는 동일한 행을 적용해야합니다. 거기에, 감사
이 예제 테이블
CREATE TABLE Invoice
(
Id INT, InvoiceNumber VARCHAR(10), Total INT
)
INSERT INTO Invoice
VALUES
(1,'200000',100),
(2,'200001',200),
(3,'200002',500),
(4,'200003',700),
(5,'200004',200),
(6,'200005',100),
(7,'200006',300)
CREATE TABLE HoldingTaxes
(
Id INT, HoldingTaxCode VARCHAR(10),HoldedAmount INT)
)
INSERT INTO HoldingTaxes
VALUES
(1,'ARV1',20),
(1,'ARV2',30),
(1,'ARV3',35),
(2,'ICA1',20),
(2,'ARV1',10),
(1,'ICA3',50)
나는 이런 식으로 뭔가를 반환하는 쿼리를 할 수 있습니다 :
InvoiceNumber Total ARV1 ARV2 ARV3 ICA1 ICA2 ICA3
200000 100 20 30 35 null null 50
이 무엇 인 내가 내 실제 테이블로하려고하고있다.
SELECT T0.DocNum [No. Factura],
CASE
WHEN t5.WTCode ='ARV1' and (t5.U_Ret_ML <>0 AND t5.U_Ret_ML is not null)
THEN 'Perro1'
else NULL
end AS ARV1
,
CASE
WHEN t5.WTCode ='ICA1' and (t5.U_Ret_ML <>0 AND t5.U_Ret_ML is not null)
THEN 'Perro2'
else NULL
end AS ICA1
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OSLP T4 ON T0.SlpCode = T4.SlpCode
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode
INNER JOIN OITW T3 ON T2.ItemCode = T3.ItemCode
INNER JOIN INV5 T5 ON T5.AbsEntry = T0.DocEntry
WHERE T1.WhsCode = T3.WhsCode`enter code here`
GROUP BY T0.DocNum,T0.DocDate,T0.DocTotal, T0.GrosProfit, T4.SlpName,T5.WTCODE,t5.U_Ret_ML
나는 당신의 대답을 기반으로 몇 가지 설명을 추가, 덕분에 – Skatalitico
업데이 트를 기반으로 바이올린을 업데이 트되었습니다. – Pirion