2017-06-09 3 views
-1

Mein Ziel ist es, eine Abfrage erstellen, die nach 3 jeweiligen Umfragetypen und ihre jeweiligen Werte gruppieren können. Die Spalten sind Das Datum wird automatisch alle paar Tage aktualisiert, wobei der Umfragetyp in verschiedene Erhebungsarten unterteilt ist: Erhebung a, Erhebung b und Erhebung c. Diese Umfragen können entweder als gesendet (dh der Kunde ist in Besitz und hat es nicht abgeschlossen) oder als beschriftet empfangen (dh der Kunde hat es ausgefüllt und die Informationen erhalten). Jeder der Umfrage-Strings beginnt mit den gleichen 4 Zeichen XXX-. Dies ist, wo meine Verwendung von Wildcard% ins Spiel kommt. Das Format des Umfragetyps ist XXX-YY-SENT oder "XXX-YY-RECIEVED". Die YY sind unterschiedlich zu den spezifischen Umfrage-Typ. Die Spalte Wert gibt Die Gesamtzahl der durchgeführten Umfragen nach dem Datum, das alle zwei Wochen vom System aktualisiert wird Mein Ziel ist es, die Daten nach ihrem Umfragetyp zu gruppieren, um ein gestapeltes Säulendiagramm in ssrs erstellen zu können, das den Unterschied zwischen gesendet und empfangen darstellt Umfragen (mit denen ich bereits eine gute Idee habe, wie sie ausgeführt werden sollen). Das Problem besteht darin, die Abfrage zu entwickeln, um die Daten zu sammeln und sie nach Umfrage X (Gruppe x-SENT und x-empfangen) und Umfrage Y (Gruppe, die sich einer Umfrage (y-SENT) und einer Umfrage (y-received) unterzogen hat und Umfrage Z (Group be Umfrage z-SENT und Umfrage z-erhalten). Hier sind Beispieldaten aus der Tabelle SurveyInfo. Dies ist die Abfrage verwende ich meine Daten zu ziehen:Ich möchte eine Gruppe von für eine Nvarchar-Datentyp verwenden

SELECT [Date] ,[SurveyType] ,[Value] 
FROM SurveyInfo] 
    WHERE Date IN (SELECT max(Date) FROM SurveyInfo) and SurveyType like '%XXX%' 

(das ist, wo ich zu einer Gruppe von Vermessungstyp die Daten mag) dies das Datener ist.

Date ,       SurveyType,    Value 

2017-06-02 08:00:02.270  XXX-AA-SENT-WITHIN-2YR   1000.0000 
2017-06-02 08:00:02.270  XXX-AA-RECEIVED-WITHIN-2YR  900.0000 
2017-06-02 08:00:02.270  XXX-BB-SENT-WITHIN-2YR   1200.0000 
2017-06-02 08:00:02.270  XXX-BB-RECEIVED-2YR    800.0000 
2017-06-02 08:00:02.270  XXX-CC-SENT-WITHIN-2YR   500.0000 
2017-06-02 08:00:02.270  XXX-CC-RECEIVED-WITHIN-2YR  400.0000 
+0

Ich habe kürzere RFPs gesehen. Was geht hier vor sich? Sie müssen dies wirklich auf eine zusammenhängende Frage herunterkochen, mit der Ihnen die Leute helfen können. – tadman

+0

Ich sehe diese Textwand an und mein Verstand weigert sich, sie zu lesen. – Snowlockk

Antwort

0

Das war schwer zu lesen, aber ich denke, ich verstehe, was Sie wollen. Beginnt der folgende, um Ihnen zu helfen?

if object_id('tempdb.dbo.#test') is not null drop table #test 
create table #test 
(
    dateVal datetime, 
    SurveyType nvarchar(500), 
    SurveyValue decimal(36,4) 
) 

insert into #test 
values('2017-06-02 08:00:02.270','XXX-AA-SENT-WITHIN-2YR',1000.0000), 
('2017-06-02 08:00:02.270','XXX-AA-RECEIVED-WITHIN-2YR', 900.0000), 
('2017-06-02 08:00:02.270','XXX-BB-SENT-WITHIN-2YR',   1200.0000), 
('2017-06-02 08:00:02.270','XXX-BB-RECEIVED-2YR',    800.0000), 
('2017-06-02 08:00:02.270','XXX-CC-SENT-WITHIN-2YR',   500.0000), 
('2017-06-02 08:00:02.270','XXX-CC-RECEIVED-WITHIN-2YR',  400.0000) 

SELECT 
    substring(SurveyType,5,2) as SurveyType, 
    case when SurveyType like '%SENT%' then 'SENT' else 'RECEIVED' END as SENT_RECEIVED, 
    sum(SurveyValue) as SumSurveyValue 
FROM #test 
GROUP BY 
    substring(SurveyType,5,2) , 
    case when SurveyType like '%SENT%' then 'SENT' else 'RECEIVED' END 
ORDER BY 
    SurveyType, 
    SENT_RECEIVED 
Verwandte Themen