SQL表CUstomized创建

时间:2015-10-27 05:09:44

标签: sql sql-server

我需要查询以下格式

 Country    Asset   Stock
 ------------------------
 INDIA       110      20
 USA         230      27
 CHINA       210      10
 GERMAY      120      18

只有数字来自数据库,而下面是数字的计数部分。对于国家/地区而言,计数查询是不同的我想手动使用国家名称和标题,如下所示,计数应来自查询。 (不确定以下是正确的查询)

'INDIA' as [country],
count(CounttblAssets.AssetID) as [asset],Count(tblAssets.AssetID) as [stock]

查询计数

 Count(tblAssets.AssetID)
 From tblAssets
 Inner Join tsysOS On tsysOS.OScode = tblAssets.OScode
 Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
 Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
 Where tblAssetCustom.State = 1 And tblAssetCustom.Customvr = 'INDIA'

注意:我没有来自前端应用程序的写权限来创建临时表。我只能查询可用的数据。

请帮助解决此问题

1 个答案:

答案 0 :(得分:0)

select tblAssetCustom.Custom18 as [country],
count(CounttblAssets.AssetID) as [asset]
,Count(tblAssets.AssetID) as [stock]
 --Count(tblAssets.AssetID)
 From tblAssets
 Inner Join tsysOS On tsysOS.OScode = tblAssets.OScode
 Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
 Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
 Where tblAssetCustom.State = 1 And tblAssetCustom.Custom18 in (
                                                                      'INDIA'    --110      20
                                                                    , 'USA'         --230      27
                                                                    , 'CHINA'    --210      10
                                                                    , 'GERMAY'      --120      18
                                                                )
group by tblAssetCustom.Custom18

我不确定你的限制在哪里。似乎tblAssetCustom.Customer具有您需要的国家/地区字符串。因此,如果要过滤国家/地区,则必须选择语句并使用group by。 还建议使用别名以提高可读性

Inner Join tsysOS On tsysOS.OScode = tblAssets.OScode

变为:

Inner Join tsysOS OS On OS.OScode = A.OScode

此外,如果您可以自己进行查询,但国家/地区不在表上,请创建派生表并加入

select 'BLAHBLAHBLAH', count(blah)
from tblAssetCustom ac join (select 'INDIA' as Country, 1 as AssetId UNION ALL Select 'USA', 2) as MyList
on ac.AssetId = MyList.AssetId