我想生成像截图一样的SQL查询输出

时间:2017-10-26 06:40:25

标签: sql sql-server tsql

我使用select VendorShortName,BasePrice,convert(varchar, ModifiedDate,101) as date from prices where barcode='8712566383849'

获取如下截图的数据

enter image description here

现在生成图表,我需要下面截图的数据。

enter image description here

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

根据数据库的类型,seekbar2 = (RangeSeekBar) findViewById(R.id.seekbar2); seekbar2.setRange(1000.0f, 5000.0f); seekbar2.setOnRangeChangedListener(new RangeSeekBar.OnRangeChangedListener() { @Override public void onRangeChanged(RangeSeekBar view, float min, float max, boolean isFromUser) { seekbar2.setLeftProgressDescription((int) min + ""); seekbar2.setRightProgressDescription((int) max + ""); } }); 是您在这些情况下使用的内容。您需要知道V1,V2等的值或执行动态SQL。

传统上,这种操作是在客户端(图形)方面完成的,而不是在数据库上完成,因为正如您所发现的那样,转换后的数据不适合关系模型。

答案 1 :(得分:1)

您可以使用PIVOT轻松完成此操作。以下是您将如何实现这一目标的示例。 Firt Image将向您展示简单的PIVOT查询以及您如何实现这一目标。

第二张图片将显示动态查询生成 - 根据您生成动态列所需的图像,这可能更有用 所以请参考第二张图片。

enter image description here

enter image description here

基于我在下面创建的查询片段 - 看看它是否对您有所帮助。



DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
 
--Get distinct values of the PIVOT Column 
SELECT @ColumnName= ISNULL(@ColumnName + ',','') 
   + QUOTENAME(vendorshortname)
FROM (select distinct vendorshortname from Prices) AS Prices

--Prepare the PIVOT query using the dynamic 
SET @DynamicPivotQuery = 
  N'SELECT ModifiedDate, ' + @ColumnName + '
FROM (select VendorShortName,BasePrice,ModifiedDate from prices where barcode=''8712566383849'') As SourceTable 
PIVOT
 (avg(BasePrice) 
      FOR VendorShortName IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery