簡體   English   中英

在另一個表中找到項目時添加到結果列表的SQL查詢

[英]SQL query to add to result list when item is found in another table

我的數據庫中有四個表。 我有一條sql語句,可以為我的主表提供正確的結果,因為我需要計算和求和一些返回的列。 但是,其他三個表中也有一個列(ZiNr)。 我想知道ZiNr是否在另一個表中,它在結果集中返回一個值。

到目前為止,這是我的sql語句:

SELECT
max([Product hoofdgrp]) as prdType
,max([ZiNr]) as ZiNr
,max([Eenheid]) as PackSize
,max([Omschrijving]) as ProdName
,max([AIP ]) as AIP
,sum([Afname aantal]) as Afname_aantal
,sum([AIP x afname aantal]) as Totaal
,max([Periode]) as Periode
FROM [reports].[dbo].[myreports]
where [Product hoofdgrp] like 'Generiek'-- AND ZiNr = '15985369'
group by ZiNr
order by Totaal desc

我需要找出ZiNr是否在另一個名為CZ的表中,並將一個名為CZ的值附加到該行。

希望我已經問清楚了。

提前致謝

您應該可以只JOIN另一個表。 確保使用LEFT OUTER JOIN ,因為INNER JOIN將僅包括找到匹配項的那些行。 然后,您可以簡單地檢查該表中的一列以查看是否找到匹配項(它必須是一列,否則該列不能為NULL

SELECT
    MAX([Product hoofdgrp]) AS prdType,
    MAX([ZiNr]) AS ZiNr,
    MAX([Eenheid]) AS PackSize,
    MAX([Omschrijving]) AS ProdName,
    MAX([AIP ]) AS AIP,
    SUM([Afname aantal]) AS Afname_aantal,
    SUM([AIP x afname aantal]) AS Totaal,
    MAX([Periode]) AS Periode,
    CASE WHEN CZ.ZiNr IS NOT NULL THEN 'CZ' ELSE '' END AS InCZ
FROM
    [reports].dbo.MyReports R
LEFT OUTER JOIN CZ ON CZ.ZiNr = R.ZiNr
WHERE
    R.[Product hoofdgrp] LIKE 'Generiek'-- AND ZiNr = '15985369'
GROUP BY
    R.ZiNr,
    CZ.ZiNr
ORDER BY
    Totaal DESC

我相信這會起作用,但是如果GROUP BYCASE語句中出現問題,那么您可能需要將其包裝在MAX 但這不是必需的。

我還希望擺脫那些列名稱中的空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM